Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số phần tử lớn hơn bên phải trong chuỗi C++

Cho chuỗi, đếm số ký tự lớn hơn bên phải của mỗi ký tự.

Ví dụ: "abc" → 2 1 0. 'a' có 2 ký tự lớn hơn bên phải (b,c). 'b' có 1 (c). 'c' có 0.

Giải thuật

  • Mảng count[length] khởi tạo 0
  • Hai vòng lặp i=0..len-1, j=i+1..len-1
  • Nếu str[i] < str[j] thì count[i]++
  • In mảng count

Ví dụ minh họa

#include <bits/stdc++.h> 
using namespace std; 

void countCharNextLargerElementsCount(string str) { 
    int len = str.length(), count[len]; 
    for (int i = 0; i < len; i++) count[i] = 0; 
    for (int i = 0; i < len; i++) { 
        for (int j = i + 1; j < len; j++) { 
            if (str[i] < str[j]) count[i]++; 
        } 
    } 
    for (int i = 0; i < len; i++) cout << count[i] << " "; 
    cout << endl; 
} 

int main() { 
    string str = "abcdefgh"; 
    countCharNextLargerElementsCount(str); 
    return 0; 
} 

Đầu ra

7 6 5 4 3 2 1 0