Uva 232 Crossword Answers(3-6)

来源:互联网 发布:网络常用语给力的意思 编辑:程序博客网 时间:2024/06/14 18:09

字符串的一道模拟题吧,小小的思考一下= =(虽然因为一些原因我也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;} 


0 0
原创粉丝点击