标签:uva
代码又是挺乱的,时间太紧没空整理,思路也不好~但能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("\n"); // } //输出; if(t!=1) printf("\n"); printf("puzzle #%d:\n",t); printf("Across\n"); 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("\n"); } 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\n",s[i][j]); flag=0; } else { printf("%c",s[i][j]); flag=1; } } } } printf("Down\n"); 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("\n"); } } } } return 0; }
标签:uva
原文地址:http://blog.csdn.net/u013382399/article/details/37961851