Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 8417 | Accepted: 5441 |
Description
Input
Output
Sample Input
2
0 1 1 0 1 0
1 0 0 1 1 1
0 0 1 0 0 1
1 0 0 1 0 1
0 1 1 1 0 0
0 0 1 0 1 0
1 0 1 0 1 1
0 0 1 0 1 1
1 0 1 1 0 0
0 1 0 1 0 0
Sample Output
PUZZLE #1
1 0 1 0 0 1
1 1 0 1 0 1
0 0 1 0 1 1
1 0 0 1 0 0
0 1 0 0 0 0
PUZZLE #2
1 0 0 1 1 1
1 1 0 0 0 0
0 0 0 1 0 0
1 1 0 1 0 1
1 0 1 1 0 1
Source
1 #include<iostream> 2 #include<cstdlib> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 #include<vector> 7 #include<queue> 8 using namespace std; 9 int T; 10 int a[50][50]; 11 void gauss(){ 12 for(int i=1;i<=30;i++){ 13 int tmp=i; 14 while(tmp<=30&&a[tmp][i]==0) tmp++; 15 if(tmp>30) continue; 16 if(tmp!=i){ 17 for(int j=1;j<=31;j++) swap(a[i][j],a[tmp][j]); 18 } 19 for(int j=1;j<=30;j++){ 20 if(i!=j&&a[j][i]==1){ 21 for(int k=1;k<=31;k++){ 22 a[j][k]^=a[i][k]; 23 } 24 } 25 } 26 } 27 } 28 int main(){ 29 scanf("%d",&T); 30 for(int Cas=1;Cas<=T;Cas++){ 31 memset(a,0,sizeof(a)); 32 for(int i=1;i<=5;i++){ 33 for(int j=1;j<=6;j++){ 34 int num=(i-1)*6+j; 35 int num1=num-6,num2=num+1,num3=num+6,num4=num-1; 36 a[num][num]=1; 37 if(1<=num1&&num1<=30) a[num][num1]=1; 38 if(1<=num2&&num2<=30&&j!=6) a[num][num2]=1; 39 if(1<=num3&&num3<=30) a[num][num3]=1; 40 if(1<=num4&&num4<=30&&j!=1) a[num][num4]=1; 41 } 42 } 43 for(int i=1;i<=30;i++) scanf("%d",&a[i][31]); 44 gauss(); 45 printf("PUZZLE #%d\n",Cas); 46 for(int i=1;i<=30;i++){ 47 printf("%d ",a[i][31]); 48 if(i%6==0) printf("\n"); 49 } 50 } 51 return 0; 52 }
原文:http://www.cnblogs.com/CXCXCXC/p/5225292.html