232 - Crossword Answers

水题,注意各组数据之间一个空行,前后没有空行

#include<stdio.h>

#include<string.h>
char s[20][20];
int b[20][20];
int a[20][20];
int main()
{
    int r,c,i,j,k,n,maxn=1,ens=0;


    while(scanf("%d",&r)!=EOF&&r)
    {
        scanf("%d",&c);
        for(i=0;i<r;i++)
            scanf("%s",s[i]);


        memset(b,0,sizeof(b));
        memset(a,0,sizeof(a));
        int ans=1;
        for(i=0;i<r;i++)
            for(j=0;j<c;j++)
        {
            if(s[i][j]!='*'){
            if(i==0||j==0)
                a[i][j]=b[i][j]=ans++;
            else{
                if(s[i-1][j]=='*'||s[i][j-1]=='*')
                    a[i][j]=b[i][j]=ans++;
            }


            }
        }
        if(ens==0)
            ens=1;
        else
            printf("\n");
        printf("puzzle #%d:\n",maxn++);
        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(k=j;k<c;k++)
            if(s[i][k]!='*'){
                printf("%c",s[i][k]);
                b[i][k]=0;
                if(k==c-1)
                    printf("\n");
            }
            else{
                printf("\n");
                break;
            }


        }
            }
        printf("Down\n");
        for(i=0;i<r;i++)
            for(j=0;j<c;j++)
        {
            if(a[i][j]!=0){
                printf("%3d.",a[i][j]);
                for(n=i;n<r;n++)
                    if(s[n][j]!='*')
                {
                    printf("%c",s[n][j]);
                    a[n][j]=0;
                    if(n==r-1)
                        printf("\n");
                }
                else{
                    printf("\n");
                    break;
                }
            }
        }


    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值