首页 > 代码库 > ZOJ 3810 A Volcanic Island 构造题
ZOJ 3810 A Volcanic Island 构造题
题目链接:点击打开链接
学弟是厉害啊。。
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <queue> 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; }
ZOJ 3810 A Volcanic Island 构造题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。