一个正确的数组
假设我们有一个由大写字母A、B和C组成长度为N的数组。如果在数组中连续出现的两个C之间,A的数量大于B的数量,则称该数组为“正确的数组”。我的任务是发现给定的数组是否“正确”,如果是,我应该输出“RIGHT”,否则我应该打印出不符合条件(B的数量多于A的数量)的片段数(C之间的位置数)。
输入:第一行输入数组中字母的数量N(1 < N > 200)。在下一行输入数组,无空格。
输出:以单行形式输出答案。
例子:
输入:16 ABBCAABCACBAAACB 输出:RIGHT
输入:15 ABBCABCACBAAACB 输出:1
输入:14 CABCABBCBAABBC 输出:3
现在,我已经尝试解决这个问题,但第三个例子对我来说没有起作用-我得到了一个输出为2,而正如上面所指示的,我应该得到3,除此之外-它可以完美地编译。
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N;
char Ar[N];
int A = 0;
int B = 0;
int piece = 0;
int attempt = 0;
for (int i = 0; i < N; i++) {
cin >> Ar[i];
}
for (int i = 0; i < N; i++) {
if (Ar[i] == 'C') {
for (int j = i + 1; i < N; j++) {
if (Ar[j] == 'A') {
A++;
} else if (Ar[j] == 'B') {
B++;
} else if (Ar[j] == 'C') {
i = j;
break;
}
}
if (A > B) {
piece++;
attempt++;
} else if (A <= B) {
attempt++;
}
A = 0;
B = 0;
}
}
if (piece == attempt) {
cout << "RIGHT";
} else {
cout << attempt - piece;
}
return 0;
}
char Ar[N];
不是有效的 C++ 代码。 - user2100815