UVA232 Crossword Answer

来源:互联网 发布:java面试题2016及答案 编辑:程序博客网 时间:2024/06/15 05:48

原题链接:https://vjudge.net/problem/UVA-232
题面较长,就不复制了。

需要注意的点:

1.每个格子的赋值,也就是每个单词的编号问题。
2.格式,这个题格式要求很怪。当单词编号大于10时,前面的空格是一个而不是两个。
最后一个样例后面没有多余的换行。

代码:

#include<iostream>#include<cstring>#include<cstdlib>using namespace std;int main(){    int r,c;    int count=0;    char table[12][12];    int number[12][12];    while(cin>>r>>c&&r&&c)    {        if(count)//为了前面说的格式,最后一个样例没有多余的换行        cout<<endl;        count++;        cout<<"puzzle #"<<count<<":"<<endl;        memset(table,0,sizeof(table));        memset(number,-1,sizeof(number));        for(int i=0;i<r;++i)            cin>>table[i];        int z=1;            //marknumber        for(int i=0;i<r;++i){              for(int j=0;j<c;++j){                  if(table[i][j]=='*')                      continue;                  if((j-1)<0||table[i][j-1]=='*'||(i-1)<0||table[i-1][j]=='*'){                      number[i][j]=z;                    z++;                  }            }          }         cout<<"Across"<<endl;        for(int i=0;i<r;++i){   //acrossline            for(int j=0;j<c;++j){                if(table[i][j]=='*'||number[i][j]==-1)                    continue;                if(number[i][j]<10)//当编号大于10的时候                    cout<<"  "<<number[i][j]<<".";                else                    cout<<" "<<number[i][j]<<".";                for(;j<c&&table[i][j]!='*';++j)                    cout<<table[i][j];                  cout<<endl;                }            }        cout<<"Down"<<endl;             for(int i=0;i<r;++i){   //downline            for(int j=0;j<c;++j){                if(table[i][j]=='*'||number[i][j]==-1)                    continue;                if(number[i][j]<10)                    cout<<"  "<<number[i][j]<<".";                else                    cout<<" "<<number[i][j]<<".";                cout<<table[i][j];                number[i][j]=-1;                int k=i+1;                for(int l=k;l<r&&table[l][j]!='*';++l){                    cout<<table[l][j];                    number[l][j]=-1;                }                cout<<endl;            }           }    }    return 0;}
0 0
原创粉丝点击