题目

习题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 纵横字谜的答案相关推荐

  1. 算法竞赛入门经典(第二版)第三章习题

    声明:作者水平有限,只是会基础C语言的小菜,C++还未入门.作者仅根据算法竞赛入门经典(第二版)书上第三章习题所述题意而编写,并未严格按照原题的输入输出编写,代码仅经过个人测试(OJ网站太慢了).代码 ...

  2. 刘汝佳《算法竞赛入门经典(第二版)》习题(三)

    刘汝佳<算法竞赛入门经典(第二版)>第三章习题(一) 习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585) 给出一个由O和X组成的串(长度为1~80),统计得分.每个 ...

  3. 刘汝佳《算法竞赛入门经典(第二版)》习题(六)

    刘汝佳<算法竞赛入门经典(第二版)>第四章习题(4-1~4-3) 习题4-1 象棋(Xiangai,ACM/ICPC Fuzhou 2011,UVa1589) 考虑一个象棋残局,其中红方有 ...

  4. 刘汝佳《算法竞赛入门经典(第二版)》习题(二)

    刘汝佳<算法竞赛入门经典(第二版)>第二章习题 目录 刘汝佳<算法竞赛入门经典(第二版)>第二章习题 习题2-1 水仙花数 习题2-2 韩信点兵 习题2-3 倒三角形 习题2- ...

  5. 算法竞赛入门经典 第2版

    算法竞赛入门经典 包括算法竞赛入门经典训练指南.算法竞赛入门经典各章习题答案.算法竞赛入门经典(第二版) 链接:https://pan.baidu.com/s/1O-bGyhdCqYtRvSBpn7J ...

  6. 《算法竞赛入门经典(第2版)》

    <算法竞赛入门经典(第2版)> 基本信息 作者: 刘汝佳 丛书名: 算法艺术与信息学竞赛 出版社:清华大学出版社 ISBN:9787302356288 上架时间:2014-6-5 出版日期 ...

  7. 《算法竞赛入门经典(第二版)》pdf

    下载地址:网盘下载 内容简介  · · · · · · <算法竞赛入门经典(第2版)>是一本算法竞赛的入门与提高教材,把C/C++语言.算法和解题有机地结合在一起,淡化理论,注重学习方法和 ...

  8. 《算法竞赛入门经典(第二版)》习题解答——第二章

    文章目录 一.习题2-1 水仙花数(daffodil) 二.习题2-2 韩信点兵(hanxin) 三.习题2-3 倒三角形(triangle) 四.习题2-4 子序列的和(subsequence) 五 ...

  9. 《算法竞赛入门经典(第2版)》——学习记录

    前言:   这里主要记录本人在学习紫书过程中充分理解过的题目的AC代码,便于以后回顾时查找代码和思路,毕竟看别人的真的有点难懂.此外,本书甚至是本书之外的相关知识学习也可能在此留下记录.   作为一只 ...

  10. 刘汝佳算法竞赛入门经典第三章习题

    /*给出一些容易理解的解题方法  但是没有oj评测 所以无法保证一定正确  矩阵的旋转给出了左旋和右旋 不确定题目3-5是哪一种*/ 习题3-1分数统计(stat) 输入一些学生的分数,哪个分数出现的 ...

最新文章

  1. python OrderedDict 详解
  2. 网络编程--connect()、listen()、accept()
  3. 89600 matlab,是德KEYSIGHT N9000B CXA 信号分析仪,多点触控,9 kHz 至 26.5 GHz
  4. Activiti Explorer安装
  5. 《黑客大曝光:移动应用安全揭秘及防护措施》一2.2 攻击与对策
  6. 前端学习(2372):uni-ui库
  7. Fetch发送网络请求
  8. 软件工程 Beta 阶段 团队贡献分数
  9. 3 配置ftp文件服务器,03-FTP和TFTP配置
  10. 【译】TetroGL: An OpenGL Game Tutorial in C++ for Win32 Platforms - Part 2 (上)
  11. python能够处理图像的第三方库_基于图像预处理的几个库
  12. @开发者 区块链技术如此火爆 你却只能望而却步?京东云为你配齐装备!
  13. java判断栈中元素数目_Java数据结构与算法-栈和队列
  14. po层和vo层中po和vo是什么意思
  15. 2022 年牛客多校第五场补题记录
  16. OpenStack | Placement组件
  17. Hadoop大数据分析及数据挖掘 读书笔记(1)
  18. 如何合理利用微信分组做好微信好友的管理
  19. 「题解」关于sizeof陷阱,无符号整形,变种水仙花数
  20. Yocto系列讲解[技巧篇]90 - toolchain交叉编译器SDK中安装的软件

热门文章

  1. Discuz! Q的搜索引擎优化(SEO)攻略
  2. 北京二号数据在土地利用动态监测中的应用
  3. zynq 7000 clg400 可作为外部AD 的引脚列表
  4. 跃迁:从技术到管理的硅谷路径
  5. 3个月“零基础”考研上岸复旦软院
  6. 科技计算机作文200字,关于网络的作文200字(5篇)
  7. 计算机网络安全知识征文,2018关于网络的作文50字篇网络安全教育听后感
  8. 论文翻译:Speech Super Resolution Generative Adversarial Network
  9. “金银花露”是夏令保健清凉饮料 养生专属!
  10. 万物互联时代,oasis助力数据存储保护