样例全过,并且自己想了几组数据也都可以,但就是过不了
#include<iostream>
using namespace std;
int main() {
int n, sum = 0, max = 0, a[101], z[101];
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> z[i];
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)a[j] = z[j];
int x = i, j = 1, b = 0, sum = 0;
for (; j <= n && b < n; j++) {
if (a[x] == j) {
sum += j;
cout << j << endl;
a[x] = 0;
j = 0;
b++;
}
else if (a[x] == 0) {
j--;
}
x++;
if (x > n)x = 1;
}
if (max < sum)max = sum;
cout << endl;
}
cout << max << endl;
return 0;
}
思路大致是,每个卡牌都当成起始点一次,进行循环,然后每次循环中,计数j不断增加,计数与卡牌数相同置为0并将j重置为1,为0的卡牌会被跳过,循环往复,直到j大于n或者所有卡牌都被置为0