UVa232 ACM/ICPC 1994 纵横字谜的答案
来源:互联网 发布:淘宝详情页私单价格 编辑:程序博客网 时间:2024/04/29 13:11
输入一个输入一个r行c列(1≤r,c≤10)的网格,黑格用“*”表示,每个白格都填有一个字母。如果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能出了网格边界),则称这个白格是一个起始格。首先把所有起始格按照从上到下、从左到右的顺序编号为1, 2, 3,…。接下来要找出所有横向单词(Across)。这些单词必须从一个起始格开始,向右延伸到一个黑格的左边或者整个网格的最右列。最后找出所有竖向单词(Down)。这些单词必须从一个起始格开始,向下延伸到一个黑格的上边或者整个网格的最下行。输入输出格式和样例请参考原题。
#include <stdio.h> #include <string.h> int main(void) { char buf[12][12];//用来存储字母 int num[12][12];//用来存放数字 int r,c; int count=1,i,j; while(scanf("%d",&r) && r!=0) { scanf("%d",&c); memset(num,0,sizeof(num)); for(i=0;i<r;i++) scanf("%s",buf[i]); int m=1; for(i=0;i<r;i++) { for(j=0;j<c;j++) { if(buf[i][j]=='*')//如果这个位置是黑格,不用填 continue; if((j-1)<0 || buf[i][j-1]=='*' || (i-1)<0 || buf[i-1][j]=='*') { //这个位置的上面或左面是黑格或是边界,开始往num填数字 num[i][j]=m++; } } } if(count!=1)printf("\n"); //第一次不用换行,来处理每两个数据间一个空行,最后一个无空行 printf("puzzle #%d:\n",count++); printf("Across\n");//接下来开始打印横行 for(i=0;i<r;i++) { int j=0; while(j<c) { if(num[i][j] == 0 || buf[i][j] =='*') { j++; //如果这是个黑格或是中间无值格,跳过这一次 continue; } printf("%3d.%c",num[i][j],buf[i][j]);//格式需要 j++; while(j<c && buf[i][j]!='*')//当输出到行结尾时结束或是黑格时 { printf("%c",buf[i][j]); j++; } printf("\n"); } } printf("Down\n");//接下来打印竖行 for(i=0;i<r;i++) { for(j=0;j<c;j++) { if(num[i][j] == 0 || buf[i][j]=='*') continue; //如果这是个黑格或是中间无值格,跳过这一次 printf("%3d.%c",num[i][j],buf[i][j]); num[i][j]=0; int k=i+1; while(k<r && buf[k][j]!='*') //当输出到行结尾时结束或是黑格时 { printf("%c",buf[k][j]); num[k][j]=0; //将其中的数归0,这是为了完成上上个注释所在行的代码 k++; } printf("\n"); } } } return 0; } //本题主要是将两张表看待成一张表来分析,关键之处在与前期数值的标记,以及最后纵向数出的//本题是典型的利用二维数组的水题, 计算不复杂,但要小心边界
1 0
- UVa232 ACM/ICPC 1994 纵横字谜的答案
- 纵横字谜的答案(Crossword Answer,ACM/ICPC Word Finals 1994,UVa232)
- 习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)
- 纵横字谜的答案 (UVa232)
- UVa232 纵横字谜的答案
- 算法竞赛入门经典-习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994,UVa232)
- 习题3.6 纵横字谜的答案 UVa232
- 纵横字谜的答案(Crossword Answers UVa232)
- 纵横字谜的答案(Crossword Answer,ACM/ICPC WOrld Finals 1994, UVa 232)
- 习题3-6 纵横字谜的答案 UVa232
- 纵横字谜的答案
- 纵横字谜的答案
- 纵横字谜的答案
- 《算法竞赛入门经典2ndEdition 》习题3-6 纵横字谜的答案(Crossword Answers, Uva232)
- 算法竞赛入门经典(第2版)习题3-6 纵横字谜的答案 Crossword Answers UVa232
- 纵横字谜的答案(Crossword Answers)
- 纵横字谜的答案(uva 232)
- UVa 232 纵横字谜的答案
- 华为上机测试题(20160725)
- Calib3d_1_摄像机标定
- java基础语法面试题
- Android沉浸式状态栏SystemBarTint的使用方法
- Eclipse10反编译插件的安装
- UVa232 ACM/ICPC 1994 纵横字谜的答案
- Um第三方登录QQ
- java 异常处理
- Flex 布局教程:实例篇
- C#之读取XML
- ELK架构浅析
- 华为OJ----多线程操作
- maven 项目 发送邮件的实现
- java设计模式之中介者模式