代码非常混乱。没有时间整理时间太紧,不是一个好主意~但它可以AC……
我不能看到消息,或增加qq共同探讨
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; char s[11][11]; int num[11][11]; int vis[11][11]; int main() { int r,c; int t=0; while(scanf("%d",&r)!=EOF) { if(r==0) break; t++; scanf("%d",&c); for(int i=0;i<r;i++) { scanf("%s",s[i]); } //编号; memset(num,0,sizeof(num)); memset(vis,0,sizeof(vis)); int t1=0; for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { if(s[i][j]!='*') { if(i==0) { num[i][j]=++t1; } else if(j==0) { num[i][j]=++t1; } else if(s[i][j-1]=='*'||s[i-1][j]=='*') { num[i][j]=++t1; } } } } // for(int i=0;i<r;i++) // { // for(int j=0;j<c;j++) // { // printf("%d",num[i][j]); // } // printf(" "); // } //输出。 if(t!=1) printf(" "); printf("puzzle #%d: ",t); printf("Across "); int flag=0; int cnt1=0; int flag1=1; for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { if(s[i][j]=='*'&&flag) { flag=0; printf(" "); } if(s[i][j]!='*') { if(num[i][j]!=0) { if(i==0&&num[i][j-1]==0) printf("%3d.",num[i][j]); else if(i!=0&&(j==0||s[i][j-1]=='*')) printf("%3d.",num[i][j]); } if(j==c-1) { printf("%c ",s[i][j]); flag=0; } else { printf("%c",s[i][j]); flag=1; } } } } printf("Down "); for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { if(num[i][j]!=0) { if(i==0) printf("%3d.",num[i][j]); else if(s[i-1][j]=='*') printf("%3d.",num[i][j]); } if(s[i][j]!='*'&&!vis[i][j]) { for(int k=i;s[k][j]!='*'&&k<r;k++) { vis[k][j]=1; printf("%c",s[k][j]); } printf(" "); } } } } return 0; }
版权声明:本文博客原创文章,博客,未经同意,不得转载。