当前位置: 首页 > news >正文

纵横字谜的答案 Crossword Answers

 纵横字谜的答案 Crossword Answers - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 翻译后大概是:

有一个 r 行 c 列 (1<r,c<10) 的网格,黑格为 * ,每个白格都填有一个字母。如果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能出了网格边界),则称这个白格是一个起始格。

你的任务是先找出网格中所有横向单词(Across)。这些单词必须从一个起始格(左边是黑格,或是第一列)开始,向右延伸到一个黑格的左边或者整个网格的最右列。然后找出所有竖向单词(Down),规则同上,这些单词必须从一个起始格(上边是黑格,或是第一行)开始,向下延伸到一个黑格的上边或者整个网格的最下行。

 基本实现思路(没有按照题目的规定输入输出,只是一个基本思路):

#include <stdio.h>
#define MAX 100int main()
{int lon, wid;scanf("%d %d", &wid, &lon);getchar();//吸收掉换行符char s[MAX][MAX];for (int i = 0; i < wid; i++){gets_s(s[i], lon + 1);}printf("\nAcross:");for (int i = 0; i < wid; i++)//横向{for (int j = 0; j < lon; j++){if (s[i][j] == '*');else{if (s[i][j - 1] == '*')printf("\n%c", s[i][j]);else{printf("%c", s[i][j]);}}}if (s[i + 1][0] == '*');elseprintf("\n");}printf("\nDown:");for (int i = 0; i < lon; i++)//纵向{for (int j = 0; j < wid; j++){if (s[j][i] == '*');else{if (s[j -1][i] == '*')printf("\n%c", s[j][i]);else{printf("%c", s[j][i]);}}}if (s[0][i + 1] == '*');elseprintf("\n");}return 0;
}

难点在于处理换行问题,上面代码对换行的思路是:

1.判断字母前面是不是*,如果是就进行换行;

2.到下一行时换行;

3.结合1与2的特殊情况,换行后下一行第一个为*,如果不加判断会进行两次换行,所以加判断进行一次换行;(最后一个是*,然后下一行这种情况不用考虑,因为由于1是判断字母前面是不是*才决定换行的,所以最后一个都是*了就不存在这一行还有一个字母了)

4.列与行的思路一样,只是换个反向而已。

http://www.lryc.cn/news/264172.html

相关文章:

  • cpp_04_类_对象_this指针_常对象_常(成员)函数
  • AttributeError: module ‘_winapi‘ has no attribute ‘SYNCHRONIZE‘解决方案
  • 多媒体互动橱窗设计如何改变内容展示形式?
  • flutter自定义地图Marker完美展示图片
  • no module named cv2 、numpy 、xxx超全解决方案
  • BSWM 模式管理(二)ESH
  • mac电脑安装虚拟机教程
  • 手动配置 kafka 用户密码,认证方式等的方式
  • 机器学习 深度学习 神经网络
  • VCG 获取某个顶点的邻接顶点
  • 四川云汇优想教育咨询有限公司电商服务靠谱吗
  • Spring MVC框架支持RESTful,设计URL时可以使用{自定义名称}的占位符@Get(“/{id:[0-9]+}/delete“)
  • 【GoLang】哪些大公司正在使用Go语言
  • 美团外卖商超商品销量数据
  • 【C++高阶(八)】单例模式特殊类的设计
  • Linux之进程(五)(进程控制)
  • 63. 不同路径 II 23.12.21(二)
  • 【线性代数】两个向量组等价,其中一个向量组线性无关,另一个向量组也是线性无关吗?
  • c语言:指针作为参数传递
  • YOLOv5性能评估指标->mAP、Precision、Recall、FPS、Confienc (讲解论文关注的主要指标)
  • 陶建辉在 CIAS 2023 谈“新能源汽车的数字化”
  • PSP - 结构生物学中的机器学习 (NIPS MLSB Workshop 2023.12)
  • 某领先的集成电路研发中心:建立跨网交换平台 杜绝数据泄露风险
  • map|动态规划|单调栈|LeetCode975:奇偶跳
  • 从安全性角度,看“可信数字底座”有何价值
  • 软件设计模式:UML类图
  • 力扣题目学习笔记(OC + Swift)15. 三数之和
  • 想将电脑屏幕共享到iPhone上,但电脑是Linux系统,可行吗?
  • 大华 DSS 城市安防数字监控系统 SQL 注入漏洞
  • vue中的侦听器和组件之间的通信