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