I - Crossword Answers
题目描述
输入一个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相关推荐
- UVA - 232 Crossword Answers
Crossword Answers UVA - 232 题目传送门 直接按照要求寻找遍历一遍即可 AC代码: #include <cstdio> #include <iostream ...
- uva 232 - Crossword Answers(纵横迷宫)
习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232) 输入一个r行c列(1≤r,c≤10)的网格,黑格用" ...
- UVA232 纵横字谜的答案 Crossword Answers 题解
题意翻译 输入一个r 行c 列(1<r,.c<10) 的网格,黑格用"*"每个白格都填有一个字母.如果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能 ...
- 习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)
原题vjudge 输入一个r行c列(1≤r,c≤10)的网格,黑格用"*"表示,每个白格都填有一个字母. 如 果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能出 ...
- Uva 232.Crossword Answers
下面的输出一定要是%3d的格式来输出序号 另外注意两个解之间的空格 1 #include <cstdio> 2 #include <cstring> 3 using names ...
- uva 232 Crossword Answers
https://vjudge.net/problem/UVA-232 题意: 输入一个r行c列的网格,黑格用"*"来表示,每个白格都填有一个字母.如果一个白格的左边或者上边的相邻位 ...
- 232 Crossword Answers
我用了一天多的时间来做这个题,从连题都看不懂,到思路混乱,到写出来差不多能运行但是有bug的代码,再到将自己写的一百行代码缩减到五十行,再到算法的逐渐精炼,我不管我能写多少代码,但是我希望我写的代码都 ...
- UVa232 Crossword Answers(纵横字谜的答案)
题意: 输入一个r行c列的网格,*表示黑格,字母表示白格.若一个白格位于边界或上方是黑格或左方是黑格,则称其为起始格.找出所有横向单词和竖向单词,其必须从一个起始格开始,到黑格或网格边界为止. 思路: ...
- UVa 232 - Crossword Answers
昨晚看了看,感觉还可以,就把这题写出来了,刚才交的的是WA了一次,原因是最后多了个空行.改了下空行出现的位置,AC了.不得不说UVA判的真严. #include<stdio.h> char ...
最新文章
- 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
- epoch,iteration,batch,batch_size
- mysql8自定义安装位置_【MySQL】Windows10:MySQL 8 自定义路径安装
- 我去,JS自执行匿名函数竟然有20几种写法!
- linux tar打包、压缩、解压到指定目录
- php 回调通知 连连支付_php怎么写连连支付退款
- 中国伺服电机行业运营现状及前景趋势展望报告2022-2028年版
- RDLC报表下载的权限问题
- Spring 的application.properties项目配置与注解
- 操作虚拟dom模拟react视图渲染
- 乌鲁木齐大雾弥漫 局地能见度不足200米
- PAT练习 人口普查
- Boost电路硬件设计实例
- xp无法查看工作组计算机 服务没有启动,XP系统弹出“无法查看工作组计算机”提示怎么办?...
- vCenter Server 6.x在同站中重新指向新外部 PSC
- snmp-cmds 系列工具命令
- 公关世界杂志公关世界杂志社公关世界编辑部2022年第22期目录
- 汇编 eax test jnz jz 等组合连用的总结
- 什么是带状线、微带线?参考平面与传输线那些事儿
- 函数 function
热门文章
- linq to access 简单实现
- 抖音后台开发社招面试
- [USACO4.1]麦香牛块Beef McNuggets By cellur925
- 多线程之Thread类
- 大爱sublime text3
- 【BZOJ】【3301】【USACO2011 Feb】Cow Line
- 第五章 常用页面元素自动化操作(上)
- 用Response.Filter生成静态页
- JDK11+Maven开发JavaFx启动问题:java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper
- 【Python笔记】集合