UVa 232 Crossword Answers

来源:互联网 发布:ahc官网扫码软件 编辑:程序博客网 时间:2024/06/03 00:09

UVa 232 Crossword Answers


A crossword puzzle consists of a rectangular grid of black and whitesquares and two lists of definitions (or descriptions).

One list of definitions is for ``words" to be written left to rightacross white squares in the rows and the other list is for words to be writtendown white squares in the columns. (A word is a sequence of alphabeticcharacters.)

To solve a crossword puzzle, one writes the words corresponding to thedefinitions on the white squares of the grid.

The definitions correspond to the rectangular grid by means of sequentialintegers on ``eligible" white squares. White squares with black squaresimmediately to the left or above them are ``eligible." White squares withno squares either immediately to the left or above are also ``eligible."No other squares are numbered. All of the squares on the first row arenumbered.

The numbering starts with 1 and continues consecutively across whitesquares of the first row, then across the eligible white squares of the secondrow, then across the eligible white squares of the third row and so on acrossall of the rest of the rows of the puzzle. The picture below illustrates arectangular crossword puzzle grid with appropriate numbering.

An ``across" word for a definition is written on a sequence of whitesquares in a row starting on a numbered square that does not follow anotherwhite square in the same row.

The sequence of white squares for that word goes across the row of thenumbered square, ending immediately before the next black square in the row orin the rightmost square of the row.

A ``down" word for a definition is written on a sequence of whitesquares in a column starting on a numbered square that does not follow anotherwhite square in the same column.

The sequence of white squares for that word goes down the column of thenumbered square, ending immediately before the next black square in the columnor in the bottom square of the column.

Every white square in a correctly solved puzzle contains a letter.

You must write a program that takes several solved crossword puzzles asinput and outputs the lists of across and down words which constitute thesolutions.


Input

Each puzzle solution in the input starts with a line containing twointegersr andc ( 1<r<10 and 1<c<10 ), where r(the first number) is the number of rows in the puzzle andc (the secondnumber) is the number of columns.

The r rows of input which follow each containc characters(excluding the end-of-line) which describe the solution. Each of thoseccharacters is an alphabetic character which is part of a word or the character``*", which indicates a black square.

The end of input is indicated by a line consisting of the single number 0.


Output

Output for each puzzle consists of an identifier for the puzzle (puzzle#1:, puzzle #2:, etc.) and the list of across words followed by the list ofdown words. Words in each list must be output one-per-line in increasing orderof the number of their corresponding definitions.

The heading for the list of across words is ``Across". The headingfor the list of down words is ``Down".

In the case where the lists are empty (all squares in the grid are black),the Across and Down headings should still appear.

Separate output for successive input puzzles by a blank line.


Sample Input

2 2

AT

*O

6 7

AIM*DEN

*ME*ONE

UPON*TO

SO*ERIN

*SA*OR*

IES*DEA

0


Sample Output

puzzle #1:

Across

  1.AT

  3.O

Down

  1.A

  2.TO

 

puzzle #2:

Across

  1.AIM

  4.DEN

  7.ME

  8.ONE

  9.UPON

 11.TO

 12.SO

 13.ERIN

 15.SA

 17.OR

 18.IES

 19.DEA

Down

  1.A

  2.IMPOSE

  3.MEO

  4.DO

  5.ENTIRE

  6.NEON

  9.US

 10.NE

 14.ROD

 16.AS

 18.I

 20.A

 


代码:

<p><span style="font-size:14px;">#include<stdio.h>#include<string.h>int p=0,r,c,f[1000];char s[15][15],down[10000][15];void Lookline(int i,int j,int *t){int q=1,x=i;down[p][0]=*t;if(s[x-1][j]=='*'||x==0){while(x<r){if(s[x][j]=='*') break;down[p][q++]=s[x++][j];}down[p][q]='1';if(s[i][j-1]=='*'||j==0) ;else (*t)++;} p++,x=j;if((s[i][j-1]=='*'||j==0)){printf("%3d.",*t);while(x<c){if(s[i][x]=='*') break;printf("%c",s[i][x++]);}(*t)++;printf("\n");}}int main(){memset(s,0,sizeof(s));int i,j,t,x=0,f=0;while(scanf("%d",&r)!=EOF){if(r==0) break;scanf("%d",&c);getchar();for(i=0;i<r;i++)gets(s[i]);t=1,p=0;if(f) printf("\n");memset(down,0,sizeof(down));printf("puzzle #%d:\n",++f);printf("Across\n");for(i=0;i<r;i++)for(j=0;j<c;j++){if(s[i][j]!='*')Lookline(i,j,&t);} printf("Down\n");for(i=0;i<p;i++){x=0;if(down[i][1]) printf("%3d.",down[i][0]);for(j=1;down[i][j]!='1'&&down[i][j];j++){x=1;printf("%c",down[i][j]);}if(x) printf("\n");}}return 0;} </span></p>

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 死亡事故后遇上不讲理家属怎么办 死亡事故后死亡者家属不讲理怎么办 住的地方治安乱混混多怎么办 使命召唤进去感觉动作好慢怎么办 40岁后不够硬不持久怎么办 如果别人毁灭了你的梦想怎么办 如果死者托梦说自己过的不好怎么办 吵架了老婆跑回娘家不回家了怎么办 和老婆吵架她跑回娘家了怎么办 鞋子里面的皮穿的都是泥怎么办 绝地求生手游模拟器键位不灵怎么办 我更新目录的时候目录不存在怎么办 如果别人欠我钱不还 我该怎么办 老婆欠信用卡的钱我该怎么办 我欠了很多钱我该怎么办 一个人欠我钱跑了我该怎么办 买房子时间长了成危楼了怎么办 别人欠我钱人找不到了怎么办 欠银行信用卡钱人失踪了怎么办 欧洲卡车模拟2没油了怎么办 蓝牙安装包里没有微信怎么办 腾讯手游模拟器玩全军出击卡怎么办 手游cf用模拟器画面很抖怎么办 腾讯手游助手模拟器游戏卡死怎么办 腾讯手游模拟器提示注册以满怎么办 手游绝地求生被检测成模拟器怎么办 腾讯手游助手模拟器内存不够怎么办 微信视频对方听不到我的声音怎么办 学生考试传纸条作弊老师应怎么办 苹果手机微信小游戏没有声音怎么办 红米手机游戏下好了安装不了怎么办 小米手机sd卡存储已满怎么办 英雄联盟峡谷之巅资格被收回怎么办 人进监狱之前信用卡没还怎么办 荒野行动资源文件下载卡住了怎么办 荒野行动绑定的手机号停机了怎么办 不小心误点了爱奇艺扣款了怎么办 和别人吵架别人先骂你怎么办 自己人被带到了缅甸黑社会了怎么办 绝地求生忘记复制钥匙激活码怎么办 绝地求生买的钥匙激活码丢了怎么办