详解-紫书习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)

本文详细探讨了紫书习题3-6中的纵横字谜问题,该问题源于1994年ACM/ICPC世界决赛的UVa232题目。内容包括如何识别和编号起始格,以及如何寻找横向和竖向单词的策略。通过实例解析输入输出格式,帮助读者理解并实现解题算法。
摘要由CSDN通过智能技术生成

紫书习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)
输入一个r行c列(1≤r,c≤10)的网格,黑格 用“*”表示,每个白格都填有一个字母。如果一个 白格的左边相邻位置或者上边相邻位置没有白格 (可能是黑格,也可能出了网格边界),则称这 个白格是一个起始格。 首先把所有起始格按照从上到下、从左到右 的顺序编号为1, 2, 3,…,如图所示。
在这里插入图片描述
接下来要找出所有横向单词(Across)。这 些单词必须从一个起始格开始,向右延伸到一个 黑格的左边或者整个网格的最右列。最后找出所 有竖向单词(Down)。这些单词必须从一个起 始格开始,向下延伸到一个黑格的上边或者整个 网格的最下行。输入输出格式和样例请参考原 题。
参考博客

#include<bits/stdc++.h>
using namespace std;
int main()
{
   
    char tu[1000][10]; //存字母图,r>=1,n<=10,r行n列
    int nu[10000][2]; //存数字标记。数组要开的足够大,能够放下所有字母!
    int x=0,y=0,cnt=1; //x行y列,cnt计数
    while(cin>>x && x!=0)
    {
   
        cin>>y;
        getchar();
        for(int i=0;i<x;i++)
            for(int j=0;j<y;j++)
                cin>>tu[i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值