检查数组是否"正确"(C++)

N.T. 5 c++ arrays element char error-checking

一个正确的数组

假设我们有一个N长度的数组,由大写字母A,B和C组成.如果在数组中一个接一个地出现的每两个C字母之间,我们将数组称为"右数组",还有更多A字母比B字母.我的工作是发现一个给定的数组是否为"右",如果是,我要打印出"右",否则我就打印了给定的条件有多少个(以铯之间的位置)是不真实的(还有更多Bs比As).

输入:在第一行中,我们输入数组N中的lettes数(1 <N> 200).在下一行中,我们输入数组,中间没有空格.

输出:在一行中打印答案.

例子:

  • 输入:16 ABBCAABCACBAAACB输出:右

  • 输入: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;
}