90分
查看原帖
90分
1104948
chang_YYB楼主2025/1/31 11:21
#include <bits/stdc++.h>
using namespace std;
int n, a[10005], g[10005], ans;
int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> a[i];
	if (a[1] == 0) {
		g[1] = 0, g[2] = 0;
		bool flag = 1;
		for (int i = 3; i <= n; i++) {
			if (g[i - 2] + g[i - 1] > a[i - 1] || g[i - 2] + g[i - 1] + 1 < a[i - 1]) {
				flag = 0;
				break;
			} else if (g[i - 2] + g[i - 1] == a[i - 1]) g[i] = 0;
			else g[i] = 1;
		}
		ans += flag;
	} else if (a[1] == 1) {
		g[1] = 0, g[2] = 1;
		bool flag = 1;
		for (int i = 3; i <= n; i++) {
			if (g[i - 2] + g[i - 1] > a[i - 1] || g[i - 2] + g[i - 1] + 1 < a[i - 1]) {
				flag = 0;
				break;
			} else if (g[i - 2] + g[i - 1] == a[i - 1]) g[i] = 0;
			else g[i] = 1;
		}
		ans += flag;
		g[1] = 1, g[2] = 0;
		flag = 1;
		for (int i = 3; i <= n; i++) {
			if (g[i - 2] + g[i - 1] > a[i - 1] || g[i - 2] + g[i - 1] + 1 < a[i - 1]) {
				flag = 0;
				break;
			} else if (g[i - 2] + g[i - 1] == a[i - 1]) g[i] = 0;
			else g[i] = 1;
		}
		ans += flag;
	} else {
		g[1] = 1, g[2] = 0;
		bool flag = 1;
		for (int i = 3; i <= n; i++) {
			if (g[i - 2] + g[i - 1] > a[i - 1] || g[i - 2] + g[i - 1] + 1 < a[i - 1]) {
				flag = 0;
				break;
			} else if (g[i - 2] + g[i - 1] == a[i - 1]) g[i] = 0;
			else g[i] = 1;
		}
		ans += flag;
	}
	cout << ans;
}

WA在第6个点上

2025/1/31 11:21
加载中...