0分求助
查看原帖
0分求助
1293644
2320508123hzc楼主2024/11/24 15:20

样例全过,并且自己想了几组数据也都可以,但就是过不了

#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

2024/11/24 15:20
加载中...