UVa 232 Crossword Answers (習題3-6)
阿新 • • 發佈:2018-11-07
字串的一道模擬題吧,小小的思考一下= =(雖然因為一些原因我也WA了幾次)
#include<cstdio> #include<cstring> #include<iostream> #include<cstdlib> #include<vector> #include<queue> #include<stack> using namespace std; int r,c,now = 0; char s[100]; struct node{ char c; int tid; }; //結構體儲存資料,也可以用兩個陣列一一對應 int main() { while(1) { node map[15][15]; int cnt = 1; cin>>r; if(r==0) break; cin>>c; if(now!=0) cout<<endl; for(int i =1;i<=r;i++) { cin>>s; for(int j = 1;j<=c;j++) map[i][j].c = s[j-1]; } for(int i = 1;i<=r;i++) { for(int j = 1;j<=c;j++) { if(map[i][j].c=='*') { map[i][j].tid = 0; continue; } if(i-1==0||j-1==0||map[i-1][j].c=='*'||map[i][j-1].c=='*') { map[i][j].tid = cnt++; } else map[i][j].tid = 0; } } printf("puzzle #%d:\nAcross\n",++now); for(int i=1;i<=r;++i) { int j=1; while(j<=c) { if(map[i][j].tid == 0 || map[i][j].c =='*') { j++; continue; } printf("%3d.%c",map[i][j].tid,map[i][j].c); j++; while(j<=c && map[i][j].c!='*') { printf("%c",map[i][j].c); j++; } printf("\n"); } } cout<<"Down"<<endl; for(int i=1;i<=r;++i) { for(int j=1;j<=c;++j) { if(map[i][j].tid == 0 || map[i][j].c=='*') continue; printf("%3d.%c",map[i][j].tid,map[i][j].c); map[i][j].tid=0; int k=i+1; while(k<=r && map[k][j].c!='*') { printf("%c",map[k][j].c); map[k][j].tid=0; k++; } printf("\n"); } } } return 0; }