uva 232 Crossword Answers
https://vjudge.net/problem/UVA-232
题意:
输入一个r行c列的网格,黑格用“*”来表示,每个白格都填有一个字母。如果一个白格的左边或者上边的相邻位置没有白格(可能是黑格,也可能没有格子),则这个白格式一个起始格子。首先把所有的起始格子按照从上到下,从左到右的编号为1,2,3,……。找出所有的横向单词,这些单词必须从一个起始格子开始,这些单词必须从一个起始格子开始,向右延伸到一个黑格的左边或者整个网格的最右列。竖向单词类似。
思路:
简单模拟,不过需要注意起始格子的判断情况,其实也不难,用一个结构体保存结果,最后按照id排序就可以了。
代码:
1 #include <stdio.h> 2 #include <string.h> 3 #include <vector> 4 #include <string> 5 #include <iostream> 6 #include <algorithm> 7 using namespace std; 8 9 struct node 10 { 11 int id; 12 string s; 13 }; 14 15 char a[15][15]; 16 int b[15][15]; 17 18 vector<node> row; 19 vector<node> col; 20 21 bool cmp(node aa,node bb) 22 { 23 return aa.id < bb.id; 24 } 25 26 int main() 27 { 28 int cas = 0; 29 30 int r,c; 31 32 while (scanf("%d",&r) != EOF) 33 { 34 if (r == 0) break; 35 36 row.clear();col.clear(); 37 38 scanf("%d",&c); 39 40 int bh = 1; 41 42 for (int i = 0;i < r;i++) 43 scanf(" %s",a[i]); 44 45 for (int i = 0;i < r;i++) 46 for (int j = 0;j < c;j++) 47 { 48 if (a[i][j] != '*') 49 { 50 if (i - 1 < 0 || j - 1 < 0) 51 { 52 b[i][j] = bh++; 53 } 54 else if (i - 1 >= 0 && a[i-1][j] != '*' && j - 1 >= 0 && a[i][j-1] != '*') continue; 55 else b[i][j] = bh++; 56 57 } 58 } 59 60 for (int i = 0;i < r;i++) 61 { 62 int st = 0; 63 64 while (st < c) 65 { 66 string tmp; 67 68 while (a[i][st] == '*') st++; 69 70 int id = b[i][st]; 71 72 for (;a[i][st] != '*' && st < c;st++) 73 { 74 tmp.push_back(a[i][st]); 75 } 76 77 78 if (tmp.size() > 0) 79 { 80 node tt; 81 tt.s = tmp; 82 tt.id = id; 83 84 row.push_back(tt); 85 } 86 } 87 88 } 89 90 91 for (int j = 0;j < c;j++) 92 { 93 int st = 0; 94 95 while (st < r) 96 { 97 string tmp; 98 99 while (a[st][j] == '*') st++; 100 101 int id = b[st][j]; 102 103 for (;a[st][j] != '*' && st < r;st++) 104 { 105 tmp.push_back(a[st][j]); 106 } 107 108 109 if (tmp.size() > 0) 110 { 111 node tt; 112 tt.s = tmp; 113 tt.id = id; 114 115 col.push_back(tt); 116 } 117 } 118 119 } 120 121 122 sort(row.begin(),row.end(),cmp); 123 sort(col.begin(),col.end(),cmp); 124 125 if (cas) puts(""); 126 127 printf("puzzle #%d:\n",++cas); 128 129 printf("Across\n"); 130 131 for (int i = 0;i < row.size();i++) 132 { 133 printf("%3d.",row[i].id); 134 cout << row[i].s << endl; 135 } 136 137 printf("Down\n"); 138 139 for (int i = 0;i < col.size();i++) 140 { 141 printf("%3d.",col[i].id); 142 cout << col[i].s << endl; 143 } 144 } 145 146 147 return 0; 148 }
转载于:https://www.cnblogs.com/kickit/p/7253891.html
uva 232 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)的网格,黑格用" ...
- UVa 232 - Crossword Answers
昨晚看了看,感觉还可以,就把这题写出来了,刚才交的的是WA了一次,原因是最后多了个空行.改了下空行出现的位置,AC了.不得不说UVA判的真严. #include<stdio.h> char ...
- Uva 232.Crossword Answers
下面的输出一定要是%3d的格式来输出序号 另外注意两个解之间的空格 1 #include <cstdio> 2 #include <cstring> 3 using names ...
- 232 Crossword Answers
我用了一天多的时间来做这个题,从连题都看不懂,到思路混乱,到写出来差不多能运行但是有bug的代码,再到将自己写的一百行代码缩减到五十行,再到算法的逐渐精炼,我不管我能写多少代码,但是我希望我写的代码都 ...
- 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)的网格,黑格用"*"表示,每个白格都填有一个字母. 如 果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能出 ...
- I - Crossword Answers
题目描述 输入一个r行c列(1<=r,c<=10)的网格,黑格用"*"表示,每个白格都填有一个字母,如果一个白格的左边相邻的位置或者边上相邻的位置没有白格(可能是黑格, ...
- UVa232 Crossword Answers(纵横字谜的答案)
题意: 输入一个r行c列的网格,*表示黑格,字母表示白格.若一个白格位于边界或上方是黑格或左方是黑格,则称其为起始格.找出所有横向单词和竖向单词,其必须从一个起始格开始,到黑格或网格边界为止. 思路: ...
最新文章
- linux sudo命令
- 写一个sql实现以下查询结果_SQL 优化极简法则,你掌握了几个?
- input type=range标签用法实例代码
- python基础教程: os.stat() 和 stat模块详解
- oracle12C要求aix系统版本,Oracle 12c RAC for AIX7.1(三)系统参数
- npm ERR! the command again as root/Administrator
- linux ubuntu 安装jdk
- 删远端分支报错remote refs do not exist或git: refusing to delete the current branch解决方法
- 注册登录时本地图片验证码
- flash 绘图API:绘制秀曲线图形
- TBS 腾讯浏览服务(X5WebView) 集成指南
- vs2019编译libcef
- Leetcode第904题
- 最有效地戒掉晚睡强迫症(熬夜强迫症、假象失眠症等等)
- 电商网站建设步骤_电商网站建设的注意事项_OctShop
- 深度学习笔记 —— 微调
- 焦点科技股份有限公司--软件测试--《社招、校招jd、公司介绍、培训发展、薪酬福利、公益慈善》整理
- 杭电计算机专业期末考试助攻,杭电嘻哈:舶来文化亦可玩出小清新
- 手游开发攻防——二、基础篇
- ESIM模拟器生成事件使用流程