本文共 1301 字,大约阅读时间需要 4 分钟。
#includeusing namespace std;int a[1000+5];int b[1000+5];char str[1000+5];int cnt = 0;bool check(int a[]) { int ans = 0; if(cnt%2){//2个一组 奇数 最后一个不算 for(int i = 0; i < cnt-2; i += 2){ ans ^= a[i+1]-a[i]-1; } } else{ for(int i = 0; i '9'){ ++i; } for(; i < len; ++i){ if(p[i] >= '0' && p[i] <= '9'){ num = num*10 + p[i]-'0'; } else{ a[cnt++] = num; break; } } } if(check(a)){//如果初始局面就是奇异局势 则先手输 printf("-1\n"); } else{ for(i = 0; i < cnt-1; ++i){ for(j = a[i]+1; j < a[i+1]; ++j){//当前和尚可以移动的范围 int t = a[i]; a[i] = j; //尝试移动 if(check(a)){ printf("%d %d\n",t,j); return 0; } a[i] = t;//恢复原先的a[i] 相当于回溯 } } } return 0; }
转载地址:http://lrimi.baihongyu.com/