纵横字谜的答案 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.hqwc.cn/news/284678.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理-CPU数据通路(单总线结构和专用通路结构)

文章目录 数据通路CPU内部单总线方式例题小结 专用数据通路方式专用数据通路方式-取指周期专用数据通路方式-例题小结 数据通路 CPU内部单总线方式 同一时刻内一个总线只可以支持一组部件的数据交互 CPU与各个寄存器的in out线接通可以控制其输入还是输出 Y和ALU有专用数据通…

生物化学 荒诞医学史笔记:重金属(暂记)

“理论基础” 四液说 根据希罗多德的说法&#xff0c;古埃及人为了维持自身健康&#xff0c;每月都会使用催吐剂。希波克拉底也提倡定期呕吐。之后的好几千年中&#xff0c;这种建议不断出现。直到最近几十年&#xff0c;催吐剂还被认为是医学处方的重要组 成部分。 大…

Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF?

博客已同步微信公众号&#xff1a;GIS茄子&#xff1b;若博客出现纰漏或有更多问题交流欢迎关注GIS茄子&#xff0c;或者邮箱联系(推荐-见主页). Python&#xff1a;&#xff08;Sentinel-1&#xff09;如何解析SNAP输出的HDF5文件并输出为GeoTIFF&#xff1f; 01 前言 最近…

云原生之深入解析减少Docker镜像大小的优化技巧

一、什么是 Docker&#xff1f; Docker 是一种容器引擎&#xff0c;可以在容器内运行一段代码&#xff0c;Docker 镜像是在任何地方运行应用程序而无需担心应用程序依赖性的方式。要构建镜像&#xff0c;docker 使用一个名为 Dockerfile 的文件&#xff0c;Dockerfile 是一个包…

结构型设计模式(二)装饰器模式 适配器模式

装饰器模式 Decorator 1、什么是装饰器模式 装饰器模式允许通过将对象放入特殊的包装对象中来为原始对象添加新的行为。这种模式是一种结构型模式&#xff0c;因为它通过改变结构来改变被装饰对象的行为。它涉及到一组装饰器类&#xff0c;这些类用来包装具体组件。 2、为什…

C++设计模式之——命令模式

命令模式 概念创建步骤示例示例一代码实现运行结果 示例二代码实现运行结果 示例三示例代码运行结果 示例四代码实现运行结果 应用场景 概念 命令模式是一种行为型设计模式&#xff0c;它允许将请求封装为一个对象&#xff0c;从而使得可以参数化客户端请求、将请求排队或者记…

MySQL主从复制详解

目录 1. 主从复制的工作原理 1.1. 主从复制的角色 1.2. 主从复制的流程 2. 配置MySQL主从复制 2.1. 确保主服务器开启二进制日志 2.2. 设置从服务器 2.3. 连接主从服务器 2.4. 启动复制 3. 主从复制的优化与注意事项 3.1. 优化复制性能 3.2. 注意复制延迟 3.3. 处理…

Ubuntu 常用命令之 cat 命令用法介绍

cat是一个常用的命令行工具&#xff0c;它用于连接和显示文件的内容。cat这个名字来源于它的功能 - concatenate(连接)。 以下是cat命令的一些基本用法 &#x1f447;显示文件内容&#xff1a;cat后面跟上文件名&#xff0c;就可以在终端显示出文件的内容。例如&#xff0c;c…

web应用开发技术的一些概念

一、Servlet 1.Servlet的工作过程&#xff1a; Servelt的工作流程示意图 &#xff08;1&#xff09;客户端发起一个Http请求到服务器&#xff0c;请求特定的资源或者是要执行特定的操作 &#xff08;2&#xff09;服务器在接收到请求后&#xff0c;根据请求相应的URL将请求分发…

制造企业MES管理系统可以和AI结合应用吗

在当今的数字化时代&#xff0c;人工智能AI和MES生产管理系统的结合将成为制造企业发展的重要趋势。这种结合可以为制造企业带来许多优势&#xff0c;如提高生产效率、降低成本、优化资源利用等。本文将探讨MES管理系统和AI的结合以及它们在制造企业中的应用&#xff0c;并分析…

从零开始实现分布式服务系统

文章目录 开发前言分布式模型系统图解注册中心模块基础服务模块被依赖的服务模块&#xff08;日志服务&#xff09;服务模块&#xff08;访问服务&#xff09;运行效果开发总结 开发前言 分布式系统具有高可靠性、高性能、可扩展性、灵活性、数据共享、可靠性和地理分布等优点…

一款开源免费美观的WinForm UI控件库 - ReaLTaiizor

前言 今天推荐一款基于MIT license开源、免费、美观的.NET WinForm UI控件库&#xff1a;ReaLTaiizor。 什么是WinForm&#xff1f; WinForm是一个传统的桌面应用程序框架&#xff0c;它基于 Windows 操作系统的原生控件和窗体。通过简单易用的 API&#xff0c;开发者可以快速…