求求大佬看看哪错了

P1598 垂直柱状图

```cpp #include <iostream> #include <cstring> #define MAXN 50000 #define maxn 50000 using namespace std; string str[MAXN]; int MAX; int letter[maxn]; int main(){ getline(cin, str[1]); getline(cin, str[2]); getline(cin, str[3]); getline(cin, str[4]); for (int i = 1;i <= 4; ++i){ int len = str[i].length(); for (int j = 0;j < len; ++j){ letter[str[i][j] - '0'] += 1; } } for (int i = 17;i <= 42; ++i){ if (letter[i] > MAX){ MAX = letter[i]; } } int number = MAX; for (int i = 1;i <= MAX; ++i){ for (int j = 17;j <= 42; ++j){ if (j == 42){ if (letter[j] >= number){ cout << "*"; } else { cout << " "; } } else { if (letter[j] >= number){ cout << "* "; } else { cout << " "; } } } cout << endl; number = number - 1; } cout << "A " << "B " << "C " << "D " << "E " << "F " << "G " << "H " << "I " << "J " << "K " << "L " << "M " << "N " << "O " << "P " << "Q " << "R " << "S " << "T " << "U " << "V " << "W " << "X " << "Y " << "Z"; return 0; } //最终得分 :20 ```
by Ruan_ji @ 2022-04-30 15:21:14


``` 以上省略... for (int i = 1;i <= 4; ++i){ int len = str[i].length(); for (int j = 0;j < len; ++j){ if(str[i][j]>='A'&&str[i][j]<='Z')letter[str[i][j] - '0'] += 1; } } 以下省略... ``` 字符串里有特殊字符,-'0'会越界(<0)
by EndCentury @ 2022-04-30 15:31:26


@[wangyuhan2010](/user/320616) 感谢大佬orz orz
by Ruan_ji @ 2022-04-30 15:33:18


@[阮济](/user/405146) ```cpp #include <iostream> #include <string> using namespace std; int cnt[30]; int main() { string s1, s2, s3, s4; getline(cin, s1); getline(cin, s2); getline(cin, s3); getline(cin, s4); for (int i = 0; i < s1.length(); i++) { if ('A' <= s1[i] && s1[i] <= 'Z') { cnt[s1[i] - 'A' + 1]++; } } for (int i = 0; i < s2.length(); i++) { if ('A' <= s2[i] && s2[i] <= 'Z') { cnt[s2[i] - 'A' + 1]++; } } for (int i = 0; i < s3.length(); i++) { if ('A' <= s3[i] && s3[i] <= 'Z') { cnt[s3[i] - 'A' + 1]++; } } for (int i = 0; i < s4.length(); i++) { if ('A' <= s4[i] && s4[i] <= 'Z') { cnt[s4[i] - 'A' + 1]++; } } int maxn = -1; for (int i = 1; i <= 26; i++) { maxn = max(maxn, cnt[i]); } for (int i = maxn; i >= 1; i--) { for (int j = 1; j <= 26; j++) { if (cnt[j] >= i) { cout << "* "; } else { cout << " "; } } cout << endl; } for (int i = 1; i <= 26; i++) { cout << char('A' + i - 1) << " "; } return 0; } ```
by JustinXiaoJunyang @ 2022-04-30 15:37:07


@[JustinXiaoJunyang](/user/397137) 感谢感谢
by Ruan_ji @ 2022-04-30 15:37:57


|