好像可以用高斯消元???
但是用搜索写 这题就很水了。、。
// by SiriusRen#include#include using namespace std;bitset<20>b;int jy;bool dfs(int t,int pos){ if(!b.to_ulong())return 1; if(t>=jy)return 0; for(int i=pos;i<20;i++) { b.flip(i); if(i==0)b.flip(i+1); else if(i==19)b.flip(i-1); else b.flip(i+1),b.flip(i-1); if(dfs(t+1,i+1))return 1; b.flip(i); if(i==0)b.flip(i+1); else if(i==19)b.flip(i-1); else b.flip(i+1),b.flip(i-1); } return 0;}int main(){ for(int i=0;i<20;i++){ scanf("%d",&jy);if(jy)b[i]=1;} for(jy=0;jy<=20;jy++) if(dfs(0,0)){ printf("%d\n",jy);return 0;}}
#includeusing namespace std;int bowl[25]={ 0},flip[25]={ 0};int main(){ int i,cnt=100,tmp; for (i=1;i<21;i++) cin >> bowl[i]; flip[1] = tmp = 1; //翻第一个 for (i=2;i<21;i++) if ( flip[i] = (flip[i-2]^flip[i-1]^bowl[i-1]) ) tmp++; if ( tmp
还有人这么写 但是我不理解。。。