UVa 232 Crossword Answers

来源:互联网 发布:access数据库设计教程 编辑:程序博客网 时间:2024/06/05 01:10
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;int r,c;char a[11][11];int b[11][11];int main(){    int pcnt=1;    while(scanf("%d",&r) && r)    {        scanf("%d",&c);        int cnt=1;  //记录编号        memset(b,0,sizeof(b));        for(int i=0;i<r;i++)        {            scanf("%s",a[i]);        }        for(int i=0;i<r;i++)            for(int j=0;j<c;j++)            {                if(a[i][j]=='*')                    b[i][j]=-1;            }        for(int i=0;i<r;i++)            for(int j=0;j<c;j++)                if((b[i][j]!=-1) &&((j==0) || (b[i][j-1]==-1) || (i==0) || (b[i-1][j]==-1)))                    b[i][j] = cnt++;        for(int i=0;i<r;i++)        {            for(int j=0;j<c;j++)                printf("%c",a[i][j]);            printf("\n");        }        for(int i=0;i<r;i++)        {            for(int j=0;j<c;j++)                printf("%3d",b[i][j]);            printf("\n");        }        int cnnt=1; //cnnt记录当前需要输出的        printf("puzzle #%d:\nAcross\n",pcnt++);        for(int i=0;i<r;i++)            for(int j=0;j<c;j++)            {                if(b[i][j]>0)                {                    printf("%d.",b[i][j]);                    while(j<c && b[i][j]!=-1)                    {                        printf("%c",a[i][j++]);                    }                    printf("\n");                }            }        printf("Down\n");        for(int i=0;i<r;i++)            for(int j=0;j<c;j++)            {                if(b[i][j]>0)                {                    int i0=i;                    printf("%d.",b[i][j]);                    while(i0<r && b[i0][j]!=-1)                    {                        b[i0][j]=0;//用来控制已经输出过多字符不能作为起始字符                        printf("%c",a[i0++][j]);                    }                    printf("\n");                }            }        printf("\n");    }    return 0;}
原创粉丝点击