題目鏈接:點擊打開鏈接
學弟是厲害啊。。
#include#include #include #include #include using namespace std; int vis[110][110],a[110][110],n; void fuck1() { for(int ii=1;ii<=n/2;ii++)//7 { int i=n,j=ii; int num=0; while(1) { if(ii%2==1) { a[i][j]=2; if(a[i-1][j]==0) i--; else j++; } else { a[i][j]=3; if(a[i-1][j]==0) i--; else j++; } num++; if(num==n) break; } } int i=n/2+2,j=n/2+1; int num=0; while(1) { a[i][j]=4; if(a[i-1][j]==0) i--; else j++; num++; if(num==n) break; } for(int ii=(n-1)/2+3;ii<=n;ii++) { int i=n,j=ii-2; int num=0; while(1) { if(ii%2==1) { a[i][j]=2; if(a[i-1][j]==0) i--; else j++; } else { a[i][j]=3; if(a[i-1][j]==0) i--; else j++; } num++; if(num==n) break; } } } void fuck2() { for(int ii=1;ii<=n/2;ii++)//9 { int i=n,j=ii; int num=0; while(1) { if(ii%2==1) { a[i][j]=2; if(a[i-1][j]==0) i--; else j++; } else { a[i][j]=3; if(a[i-1][j]==0) i--; else j++; } num++; if(num==n) break; } } int i=n/2+2,j=n/2+1; int num=0; while(1) { a[i][j]=4; if(a[i-1][j]==0) i--; else j++; num++; if(num==n) break; } for(int ii=(n-1)/2+3;ii<=n;ii++) { int i=n,j=ii-2; int num=0; while(1) { if(ii%2==1) { a[i][j]=2; if(a[i-1][j]==0) i--; else j++; } else { a[i][j]=3; if(a[i-1][j]==0) i--; else j++; } num++; if(num==n) break; } } } void fuck3() { for(int ii=1;ii<=n/2;ii++)//10 { int i=n,j=ii; int num=0; while(1) { if(ii%2==1) { a[i][j]=2; if(a[i-1][j]==0) i--; else j++; } else { a[i][j]=3; if(a[i-1][j]==0) i--; else j++; } num++; if(num==n) break; } } int i=n/2+2,j=n/2+1; int num=0; while(1) { a[i][j]=4; if(a[i-1][j]==0) i--; else j++; num++; if(num==n) break; } for(int ii=n/2+3;ii<=n;ii++) { int i=n,j=ii-2; int num=0; while(1) { if(ii%2==1) { a[i][j]=2; if(a[i-1][j]==0) i--; else j++; } else { a[i][j]=3; if(a[i-1][j]==0) i--; else j++; } num++; if(num==n) break; } } } void fuck4() { for(int ii=1;ii<=n/2;ii++)//8 { int i=n,j=ii; int num=0; while(1) { if(ii%2==1) { a[i][j]=2; if(a[i-1][j]==0) i--; else j++; } else { a[i][j]=3; if(a[i-1][j]==0) i--; else j++; } num++; if(num==n) break; } } int i=n/2+2,j=n/2+1; int num=0; while(1) { a[i][j]=4; if(a[i-1][j]==0) i--; else j++; num++; if(num==n) break; } for(int ii=n/2+3;ii<=n;ii++) { int i=n,j=ii-2; int num=0; while(1) { if(ii%2==0) { a[i][j]=3; if(a[i-1][j]==0) i--; else j++; } else { a[i][j]=2; if(a[i-1][j]==0) i--; else j++; } num++; if(num==n) break; } } } int main () { int t; while(scanf("%d",&t)!=EOF) { while(t--) { memset(a,0,sizeof(a)); scanf("%d",&n); if(n==1) printf("Y\n"); else if(n==2||n==3||n==4) printf("No solution!\n"); else if(n==6) { printf("YYYYYY\n"); printf("RRBBBB\n"); printf("YRRRRB\n"); printf("YYBBGB\n"); printf("YYBBGG\n"); printf("YBBGGG\n"); } else { memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) a[1][i]=1; if(n%2==1)//奇數 { if((n/2)%2==1)//7 fuck1(); else//9 fuck2(); } else { if((n/2)%2==1)//10 fuck3(); else//8 fuck4(); } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { //printf("%d",a[i][j]); if(a[i][j]==1) printf("Y"); else if(a[i][j]==2) printf("G"); else if(a[i][j]==3) printf("R"); else if(a[i][j]==4) printf("B"); } printf("\n"); } } } } return 0; }