纵横字谜的答案 Crossword Answers

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

 翻译后大概是:

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

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

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

#include <stdio.h>
#define MAX 100

int 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] == '*')
			;
		else
			printf("\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] == '*')
			;
		else
			printf("\n");
	}

	return 0;
}

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

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

2.到下一行时换行;

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

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

相关推荐

  1. 深入剖析 Django 与 FastAPI 选择之

    2023-12-19 19:14:01       32 阅读
  2. 函数“重载”,全人工打造未解之

    2023-12-19 19:14:01       8 阅读
  3. 贪心算法习题答案

    2023-12-19 19:14:01       13 阅读
  4. 探索哥德巴赫猜想:数学未解之

    2023-12-19 19:14:01       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-19 19:14:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-19 19:14:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-19 19:14:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-19 19:14:01       20 阅读

热门阅读

  1. React 状态管理中的类型错误及解决方案

    2023-12-19 19:14:01       39 阅读
  2. ansible

    ansible

    2023-12-19 19:14:01      33 阅读
  3. 如何保证架构的质量

    2023-12-19 19:14:01       39 阅读
  4. 硬件编程语言

    2023-12-19 19:14:01       45 阅读
  5. json-server详解

    2023-12-19 19:14:01       40 阅读
  6. 解决matplotlib中文显示乱码

    2023-12-19 19:14:01       45 阅读
  7. 面试题,手写soft_nms

    2023-12-19 19:14:01       44 阅读
  8. 音频筑基:瞬态、基音、偏噪信号类型分析

    2023-12-19 19:14:01       37 阅读