232 - Crossword Answers

来源:互联网 发布:angular.js 编辑:程序博客网 时间:2024/05/29 08:48

题目不难,开始没读懂,后来没思路;

最后多用了几个数组。

先是把数表打出,然后用b,c两个数组各存了Across和Down的情况,效果如图:

不多说上代码:

#include<stdio.h>#include<string.h>int main(){    int r,c,B=0,i,j,x,p;    char a[12][12];    int b[12][12],d[12][12];    while(scanf("%d",&r),r){x=0;        scanf("%d",&c);getchar();        for(i=0;i<r;++i){            for(j=0;j<c;++j){                 scanf("%c",&a[i][j]);b[i][j]=0;d[i][j]=0;            }            getchar();        }        for(i=0;i<r;++i)            for(j=0;j<c;++j){                if(a[i][j]!='*'){                    if(j==0||i==0){                        ++x;b[i][j]=x;d[i][j]=x;                    }                    else if(a[i][j-1]=='*'||a[i-1][j]=='*'){                        ++x;b[i][j]=x;d[i][j]=x;                    }                }                else{                     b[i][j]=-1;d[i][j]=-1;                }            }        for(i=0;i<r;++i)            for(j=0;j<c;++j)                if(a[i][j]!='*'){                    if(j!=0&&a[i][j-1]!='*')                        b[i][j]=0;                }        for(i=0;i<r;++i)            for(j=0;j<c;++j)                if(a[i][j]!='*'){                    if(i!=0&&a[i-1][j]!='*')                        d[i][j]=0;                }       if(B)        printf("\n");        printf("puzzle #%d:\n",++B);        printf("Across\n");        for(i=0;i<r;++i)            for(j=0;j<c;++j)                if(b[i][j]>0){                    printf("%3d.",b[i][j]);                    for(p=j;p<c;++p){                        if(b[i][p]!=-1)                            printf("%c",a[i][p]);                        else                            break;                    }                    printf("\n");                }        printf("Down\n");          for(i=0;i<r;++i)            for(j=0;j<c;++j)                if(d[i][j]>0){                    printf("%3d.",d[i][j]);                    for(p=i;p<r;++p){                        if(d[p][j]!=-1)                            printf("%c",a[p][j]);                        else                            break;                    }                    printf("\n");                }    }    return 0;}

0 0
原创粉丝点击