题目描述

输入一个r行c列(1<=r,c<=10)的网格,黑格用"*"表示,每个白格都填有一个字母,如果一个白格的左边相邻的位置或者边上相邻的位置没有白格(可能是黑格,也可能除了网格边界), 则称这个白格是一个起始格。首先把所有起始格按照从上到下,从左到右的顺序编号为1,2,3…,如图。接下来要输出所由横向单词,这些单词必须从一个起始格开始,向右延伸到一个黑格的左边,或者整个网格的最右列。最后找出所有竖向单词。这些单词必须从一个起始格开始,向下延伸到一个黑格的上边或者整个网格的最下行。

input

2 2
AT
* O
6 7
AIM * DEN
* ME* ONE
UPON* TO
SO* ERIN
* SA* OR*
IES* DEA
0

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

#include<stdio.h>
#include<string.h>
int main(void)
{int n,m;char a[11][11];int b[11][11];int t=1;while(scanf("%d",&n)!=EOF&&n!=0){scanf("%d",&m);memset(b,0,sizeof(b));int q=1;getchar();for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%c",&a[i][j]);}getchar();}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(i==0||j==0||a[i-1][j]=='*'||a[i][j-1]=='*')if(a[i][j]!='*')b[i][j]=q++;      //记录所有起始格的编号}}if(t-1)printf("\n");printf("puzzle #%d:\n",t);printf("Across\n");for(int i=0;i<n;i++){     //横向单词int k=0;for(int j=0;j<m;j++){int p=0;if((j==0||a[i][j-1]=='*')&&a[i][j]!='*'){  //判断是否为起始格printf("%3d.",b[i][j]);       //如果是,则输出起始格的编号p=1;for(k=j;k<m&&a[i][k]!='*';k++)printf("%c",a[i][k]);printf("\n");}}}printf("Down\n");for(int i=0;i<n;i++){    //竖向单词int k=0;for(int j=0;j<m;j++){int p=0;if((i==0||a[i-1][j]=='*')&&a[i][j]!='*'){  //判断是否为起始格printf("%3d.",b[i][j]);    //如果是输出起始格的编号for(k=i;k<n&&a[k][j]!='*';k++)printf("%c",a[k][j]);printf("\n");}}}t++;}
}

I - Crossword Answers相关推荐

  1. UVA - 232 ​​​​​​​Crossword Answers

    Crossword Answers UVA - 232 题目传送门 直接按照要求寻找遍历一遍即可 AC代码: #include <cstdio> #include <iostream ...

  2. uva 232 - Crossword Answers(纵横迷宫)

    习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232) 输入一个r行c列(1≤r,c≤10)的网格,黑格用" ...

  3. UVA232 纵横字谜的答案 Crossword Answers 题解

    题意翻译 输入一个r 行c 列(1<r,.c<10) 的网格,黑格用"*"每个白格都填有一个字母.如果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能 ...

  4. 习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)

    原题vjudge 输入一个r行c列(1≤r,c≤10)的网格,黑格用"*"表示,每个白格都填有一个字母. 如 果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能出 ...

  5. Uva 232.Crossword Answers

    下面的输出一定要是%3d的格式来输出序号 另外注意两个解之间的空格 1 #include <cstdio> 2 #include <cstring> 3 using names ...

  6. uva 232 Crossword Answers

    https://vjudge.net/problem/UVA-232 题意: 输入一个r行c列的网格,黑格用"*"来表示,每个白格都填有一个字母.如果一个白格的左边或者上边的相邻位 ...

  7. 232 Crossword Answers

    我用了一天多的时间来做这个题,从连题都看不懂,到思路混乱,到写出来差不多能运行但是有bug的代码,再到将自己写的一百行代码缩减到五十行,再到算法的逐渐精炼,我不管我能写多少代码,但是我希望我写的代码都 ...

  8. UVa232 Crossword Answers(纵横字谜的答案)

    题意: 输入一个r行c列的网格,*表示黑格,字母表示白格.若一个白格位于边界或上方是黑格或左方是黑格,则称其为起始格.找出所有横向单词和竖向单词,其必须从一个起始格开始,到黑格或网格边界为止. 思路: ...

  9. UVa 232 - Crossword Answers

    昨晚看了看,感觉还可以,就把这题写出来了,刚才交的的是WA了一次,原因是最后多了个空行.改了下空行出现的位置,AC了.不得不说UVA判的真严. #include<stdio.h> char ...

最新文章

  1. 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
  2. epoch,iteration,batch,batch_size
  3. mysql8自定义安装位置_【MySQL】Windows10:MySQL 8 自定义路径安装
  4. 我去,JS自执行匿名函数竟然有20几种写法!
  5. linux tar打包、压缩、解压到指定目录
  6. php 回调通知 连连支付_php怎么写连连支付退款
  7. 中国伺服电机行业运营现状及前景趋势展望报告2022-2028年版
  8. RDLC报表下载的权限问题
  9. Spring 的application.properties项目配置与注解
  10. 操作虚拟dom模拟react视图渲染
  11. 乌鲁木齐大雾弥漫 局地能见度不足200米
  12. PAT练习 人口普查
  13. Boost电路硬件设计实例
  14. xp无法查看工作组计算机 服务没有启动,XP系统弹出“无法查看工作组计算机”提示怎么办?...
  15. vCenter Server 6.x在同站中重新指向新外部 PSC
  16. snmp-cmds 系列工具命令
  17. 公关世界杂志公关世界杂志社公关世界编辑部2022年第22期目录
  18. 汇编 eax test jnz jz 等组合连用的总结
  19. 什么是带状线、微带线?参考平面与传输线那些事儿
  20. 函数 function

热门文章

  1. linq to access 简单实现
  2. 抖音后台开发社招面试
  3. [USACO4.1]麦香牛块Beef McNuggets By cellur925
  4. 多线程之Thread类
  5. 大爱sublime text3
  6. 【BZOJ】【3301】【USACO2011 Feb】Cow Line
  7. 第五章 常用页面元素自动化操作(上)
  8. 用Response.Filter生成静态页
  9. JDK11+Maven开发JavaFx启动问题:java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper
  10. 【Python笔记】集合