《算法竞赛入门经典》(第2版) 习题3-6 纵横字谜的答案
题目
习题3-6 纵横字谜的答案(Cross Answers,ACM/ICPC World Final 1994, UVa232)ps: Final???!!!难道是1994年世界总决赛的第一题…哈哈哈哈哈
输入一个r行c列(1<=r,c<=10)的网格,黑格用“ * ” 表示,每个白格都填有一个字母。如果一个白格的左边相邻位置或者上边相邻位置没有白格(即 是黑格或者出了网格边界了),则称这个白格是一个起始格。
首先把起始格编号,接下来找横向单词、竖向单词…不想码字了…上图!!!
英文原题传送门:Virtual Judge网站的UVa原题
这Vjudge真的强,集合了好多好多平台的OJ资源,可以不用傻fufu的等UVa的OJ那2G网速了~~
去看了一下其他人的代码,发现有的好长,100多行,然后,我切身体会到,阅读别人的代码真的好难,每个人有每个人的习惯、思路。
思路
我花了两个半小时,才把这题AC了,一次过的,用的语句就是判断、循环(问就是没其他的语句,就这…目前的菜鸟水平…)
加油加油,谁都是这么过来的,你真的真的真的很不错!!!
好了好了谢谢大家的鼓励,我会加油的!!!
好了,我总的思路就是 :首先,把题目理解了,这题目好长的说。因为数据量不大,最大就10 X 10的大小,所以用10 X 10的二维数组就能搞定,用一个字符二维数组存放数据,用一个整型二维数组来记录起始格的顺序编号,接着按条件 用循环把结果输出。
总结自己花这么长时间的原因:在按条件 用循环把数据按题目要求输出的时候,折腾了好长的时间,做完其实发现不难(我的代码没算法,很菜,但以AC为目标的话,是不难)。
AC代码
#include <iostream>
#include <string>using namespace std;const int maxn = 10; //最大就10行10列
//16:30- 19:40 中间扣掉半小时吃饭
int main() {int r,c;char str[maxn][maxn];int kase = 0; while (cin >> r) {if (r == 0) break; //结束方阵的输入 cin >> c;//输入数据 for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {cin >> str[i][j];}} kase++;
// cout << "输入完成" << kase << endl; //开始记录起始格 int sign[maxn][maxn] = {0}; //首先全置为0 int number = 1;for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {if (str[i][j] == '*') continue;if (i - 1 < 0 || str[i-1][j] == '*' || j - 1 < 0 || str[i][j-1] == '*') {sign[i][j] = number; number++;}}}
// cout << "起始格:\n";
// for (int i = 0; i < r; i++) {// for (int j = 0; j < c; j++) {// cout << sign[i][j] << " ";
// }
// cout << endl;
// }//测试起始格if (kase > 1) cout << endl;printf("puzzle #%d:\n", kase);printf("Across\n");for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {if (sign[i][j]) {printf("%3d.", sign[i][j]);int m = j;for ( ; m < c && str[i][m] != '*'; m++) {cout << str[i][m];}cout << endl;j = m;}}}printf("Down\n");
// for (int j = 0; j < c; j++) {// for (int i = 0; i < r; i++) {// if (sign[i][j]) {// printf("%3d.", sign[i][j]);
// int m = i;
// for ( ; m < r && str[m][j] != '*'; m++) {// cout << str[m][j];
// }
// cout << endl;
// i = m;
// }
//
// }
// } //这是类似Across的,但是没有按数字大小排序 for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {if (sign[i][j]) {printf("%3d.", sign[i][j]);for (int m = i; m < r && str[m][j] != '*'; m++) {cout << str[m][j];sign[m][j] = 0; //标志置为0,再遍历到的时候不会重复 }cout << endl;}}} } return 0;
}
《算法竞赛入门经典》(第2版) 习题3-6 纵横字谜的答案相关推荐
- 算法竞赛入门经典(第二版)第三章习题
声明:作者水平有限,只是会基础C语言的小菜,C++还未入门.作者仅根据算法竞赛入门经典(第二版)书上第三章习题所述题意而编写,并未严格按照原题的输入输出编写,代码仅经过个人测试(OJ网站太慢了).代码 ...
- 刘汝佳《算法竞赛入门经典(第二版)》习题(三)
刘汝佳<算法竞赛入门经典(第二版)>第三章习题(一) 习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585) 给出一个由O和X组成的串(长度为1~80),统计得分.每个 ...
- 刘汝佳《算法竞赛入门经典(第二版)》习题(六)
刘汝佳<算法竞赛入门经典(第二版)>第四章习题(4-1~4-3) 习题4-1 象棋(Xiangai,ACM/ICPC Fuzhou 2011,UVa1589) 考虑一个象棋残局,其中红方有 ...
- 刘汝佳《算法竞赛入门经典(第二版)》习题(二)
刘汝佳<算法竞赛入门经典(第二版)>第二章习题 目录 刘汝佳<算法竞赛入门经典(第二版)>第二章习题 习题2-1 水仙花数 习题2-2 韩信点兵 习题2-3 倒三角形 习题2- ...
- 算法竞赛入门经典 第2版
算法竞赛入门经典 包括算法竞赛入门经典训练指南.算法竞赛入门经典各章习题答案.算法竞赛入门经典(第二版) 链接:https://pan.baidu.com/s/1O-bGyhdCqYtRvSBpn7J ...
- 《算法竞赛入门经典(第2版)》
<算法竞赛入门经典(第2版)> 基本信息 作者: 刘汝佳 丛书名: 算法艺术与信息学竞赛 出版社:清华大学出版社 ISBN:9787302356288 上架时间:2014-6-5 出版日期 ...
- 《算法竞赛入门经典(第二版)》pdf
下载地址:网盘下载 内容简介 · · · · · · <算法竞赛入门经典(第2版)>是一本算法竞赛的入门与提高教材,把C/C++语言.算法和解题有机地结合在一起,淡化理论,注重学习方法和 ...
- 《算法竞赛入门经典(第二版)》习题解答——第二章
文章目录 一.习题2-1 水仙花数(daffodil) 二.习题2-2 韩信点兵(hanxin) 三.习题2-3 倒三角形(triangle) 四.习题2-4 子序列的和(subsequence) 五 ...
- 《算法竞赛入门经典(第2版)》——学习记录
前言: 这里主要记录本人在学习紫书过程中充分理解过的题目的AC代码,便于以后回顾时查找代码和思路,毕竟看别人的真的有点难懂.此外,本书甚至是本书之外的相关知识学习也可能在此留下记录. 作为一只 ...
- 刘汝佳算法竞赛入门经典第三章习题
/*给出一些容易理解的解题方法 但是没有oj评测 所以无法保证一定正确 矩阵的旋转给出了左旋和右旋 不确定题目3-5是哪一种*/ 习题3-1分数统计(stat) 输入一些学生的分数,哪个分数出现的 ...
最新文章
- python OrderedDict 详解
- 网络编程--connect()、listen()、accept()
- 89600 matlab,是德KEYSIGHT N9000B CXA 信号分析仪,多点触控,9 kHz 至 26.5 GHz
- Activiti Explorer安装
- 《黑客大曝光:移动应用安全揭秘及防护措施》一2.2 攻击与对策
- 前端学习(2372):uni-ui库
- Fetch发送网络请求
- 软件工程 Beta 阶段 团队贡献分数
- 3 配置ftp文件服务器,03-FTP和TFTP配置
- 【译】TetroGL: An OpenGL Game Tutorial in C++ for Win32 Platforms - Part 2 (上)
- python能够处理图像的第三方库_基于图像预处理的几个库
- @开发者 区块链技术如此火爆 你却只能望而却步?京东云为你配齐装备!
- java判断栈中元素数目_Java数据结构与算法-栈和队列
- po层和vo层中po和vo是什么意思
- 2022 年牛客多校第五场补题记录
- OpenStack | Placement组件
- Hadoop大数据分析及数据挖掘 读书笔记(1)
- 如何合理利用微信分组做好微信好友的管理
- 「题解」关于sizeof陷阱,无符号整形,变种水仙花数
- Yocto系列讲解[技巧篇]90 - toolchain交叉编译器SDK中安装的软件
热门文章
- Discuz! Q的搜索引擎优化(SEO)攻略
- 北京二号数据在土地利用动态监测中的应用
- zynq 7000 clg400 可作为外部AD 的引脚列表
- 跃迁:从技术到管理的硅谷路径
- 3个月“零基础”考研上岸复旦软院
- 科技计算机作文200字,关于网络的作文200字(5篇)
- 计算机网络安全知识征文,2018关于网络的作文50字篇网络安全教育听后感
- 论文翻译:Speech Super Resolution Generative Adversarial Network
- “金银花露”是夏令保健清凉饮料 养生专属!
- 万物互联时代,oasis助力数据存储保护