//纵横字谜的答案
#include <stdio.h>
#include <ctype.h>
int main (){int r,c;int count = 0; while(1){scanf("%d",&r);if(r==0) break;scanf("%d",&c);char str[r+1][c+1];for(int i=0;i<=r;i++){gets(str[i]);}//读入网格//for(int i=1;i<=r;i++){//  for(int j=0;j<c;j++){//    printf("%c ",str[i][j]);//}printf("\n");//}//测试读入 //i=1,j=0为起始 //首先编号int num = 1;int numbers[r+1][c+1]={0};for(int i=1;i<=r;i++){for(int j=0;j<c;j++){if(str[i][j]!='*'){if(i==1||j==0||str[i-1][j]=='*'||str[i][j-1]=='*'){numbers[i][j]=num++;} }}}//编号//test输出编好号后的序列//for(int i=1;i<=r;i++){//    for(int j=0;j<c;j++){//        printf("%d ",numbers[i][j]);//    }printf("\n");//} printf("puzzle #%d\n",++count);printf("Across\n");int flag = 1;for(int i=1;i<=r;i++){flag = 1; for(int j=0;j<c;j++){if(flag&&numbers[i][j]!=0)printf("%d.",numbers[i][j]);if(str[i][j]!='*'){flag = 0;printf("%c",str[i][j]);}else if(str[i][j]=='*'){flag = 1;if(isalpha(str[i][j-1])&&isalpha(str[i][j+1]))printf("\n");//当星号的前面或后面是白格时 //在同一行中遇到星号时 }}printf("\n");}printf("Down\n");flag = 1;for(int j=0;j<c;j++){flag = 1; for(int i=1;i<=r;i++){if(flag&&numbers[i][j]!=0) printf("%d.",numbers[i][j]);if(str[i][j]!='*'){flag = 0;printf("%c",str[i][j]);    }else if(str[i][j]=='*'){//在同一列中遇到星号时 flag = 1;//同一列中连续出现多个星号if(isalpha(str[i-1][j])&&isalpha(str[i+1][j])){printf("\n");//当星号的上面或者下面是白格时 } }}printf("\n");}}return 0;
} 

有几个值得学习的地方是编号,二维字符数组的读入,测试读入的情况便于后续的处理,然后是在一行或一列中间出现的星号的判断,最开始自己的思路是错的就只考虑了星号和省去一行前面的星号,但是不行,因为连续星号的判断好像有点复杂,不如直接判断一行中间的星号,这个判断是为了输出时回车符的输出更加精确

UVa232纵横字谜的答案相关推荐

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

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

  2. 习题3-6 纵横字谜的答案 UVa232

    算法竞赛入门经典(第2版)第3章 数组和字符串 习题3-6 纵横字谜的答案 UVa232 感悟. 1.决定自此,每做一道,必从网站下载该道的PDF文件,废弃从别处下载的PDF文件,因其错误太多. 2. ...

  3. 纵横字谜的答案(Uva232)

    纵横字谜的答案(Uva232) 题目UVa232,题目考察点时二维数组的使用.注意点是需要读懂题目意思,关键点是起始格需要用额外用一个数组存储.然后根据横向和纵向单词的定义,结合起始格,循环遍历打印输 ...

  4. 纵横字谜的答案 (UVa232)

    纵横字谜的答案 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit  Status De ...

  5. 《算法竞赛入门经典》(第2版) 习题3-6 纵横字谜的答案

    题目 习题3-6 纵横字谜的答案(Cross Answers,ACM/ICPC World Final 1994, UVa232)ps: Final???!!!难道是1994年世界总决赛的第一题-哈哈 ...

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

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

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

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

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

    做到这个题目的时候发现和前面的那个题目非常的像,都是字符都是表格.依然是用一个二维字符数组,储存表格的状况,然后进行搜索判断. 先写一下我犯的错误吧,读者看到我犯过的错误之后说不定就找到自己的方法了呢 ...

  9. 习题 3-6 纵横字谜的答案

    这道题网上有的答案是毒瘤啊,自己都写错了还发出来,题目虽然是英文的,但是也不至于题目都搞错了吧,害自己以为错了,debug半个多小时,╮(╯▽╰)╭ 题目 输入一个r行c列(1≤r,c≤10)的网格, ...

最新文章

  1. linux esd转iso,window_Win10 TH2正式版10586官方ESD映像怎么转换成ISO镜像?,今天phpstudy分享了Win10 TH2(Build - phpStudy...
  2. 批量插入/修改网页代码的asp脚本
  3. mysql explain字段含义,MySQL(十七):EXPLAIN 输出信息之 Extra 字段解释
  4. 微信开发系列之一 - 微信公众号开发的开发环境搭建
  5. Android之日期时间选择器使用方法
  6. 内存分区与栈帧使用分析
  7. JavaScript JSON数据格式
  8. numpy中array的维度之-------一维向量和一维数组的区别。
  9. 使用JS读取本地文件
  10. Java面试宝典4.0版
  11. 怎样用计算机算出别人的出生日期,Excel根据出生日期计算年龄的步骤
  12. K8S重启后coredns pod无法正常运行
  13. 收集的13个杀毒软件和安全防护软件(有图哦)
  14. 应用虚拟化软件-VA虚拟应用管理平台
  15. Stata-交乘项专题: 主效应项可以忽略吗?
  16. 基础入门-算法逆向散列对称非对称JS源码逆向AESDESRSASHA
  17. Project2016创建复合视图
  18. UVa 12325 - Zombie's Treasure Chest(暴力枚举+预处理)
  19. mysql group by month_sql - MySQL查询GROUP BY日/月
  20. 微信小程序开发源码集合平台系统 完整前后端+安装教程

热门文章

  1. 永宏plc的ip通信转接模块,能ping通了,却无法建立modbus tcp连接的问题解决
  2. win32 CreateDialog和DialogBox
  3. linux could not open input file:,PHP命令行提示“Could not open input file”解决方法
  4. NCspeed软件+视频教程
  5. 对口单招计算机电工试题答案,2015年对口单招机电专业电工技能试题一
  6. 中国(EV)电动汽车的“影子”(上)
  7. 别光顾着学技术,也要抬头看看路
  8. abb机器人易耗品_ABB机器人中文手册
  9. Ehcache(缓存)
  10. 二叉树的遍历-Recursive/Iterative/Morris