这题想了好久都没想出来 然后在网上搜的题解 终于明白了。。。
当为1堆的时候 先手为必胜态
当为2堆并且两堆都相同时 先手怎么走后手怎么走就行了
当为3堆 先手只要一次拿成两堆且相同 的情况就是必胜态
4堆的时候只要看排序后 两堆 两堆是否相同就行了
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
bool f[1005];
int main()
{
int n;
while (scanf("%d", &n)&& n)
{
memset(f, 0, sizeof(f));
int ans = 0;
for (int i = 0; i < n; i++)
{
int a;
scanf("%d", &a);
if (f[a])
ans--;
else
ans++;
f[a] = !f[a];
}
if (ans)
printf("1\n");
else
printf("0\n");
}
return 0;
}