ilovealgorithm88 2024-03-23 20:47 采纳率: 0%
浏览 3

UVA232题 纵横字谜一直WA

uva232题,纵横字谜(crossword answer),在自己电脑上测试一直是对的,用平台给的debug数据也一直是对的,在oj上提交却一直WA,求帮忙。

img

#include<bits/stdc++.h>
using namespace std;

typedef struct
{
    int num;
    bool mon;
    char c;
}NODE;
NODE node[15][15];

int main()
{
    int row,col;
    int flag = 1;
    while(cin >> row&&row)
    {
        cin >> col;
        for(int i = 0;i<row;i++)
        {
            for(int j= 0;j<col;j++)
            {
                node[i][j].num = 0;
                node[i][j].mon = false;
            }
        }
        char tem;
        getchar();
        int number = 1;
        for(int i = 0;i<row;i++)//一次性找完黑色块,输入,以及加标识
        {
            for(int j = 0;j<col;j++)
            {
                cin >> tem;
                node[i][j].c = tem;
                
                if(node[i][j].c == '*'&&((i*j)!=((row-1)*(col-1)))) 
                {
                    if(i == row-1)
                    {
                        node[i][j+1].mon = true;
                        continue;
                    }
                    if(j == col-1)
                    {
                        node[i+1][j].mon = true;
                        continue;
                    }
                    if(node[i+1][j].c != '*')node[i+1][j].mon = true;
                    if(node[i][j+1].c != '*')node[i][j+1].mon = true;
                }
                if((i==0&&(node[i][j].c!='*'))||(j==0&&(node[i][j].c!='*')))
                {
                    node[i][j].num = number++;
                    continue;
                }
                if(node[i][j].mon&&(node[i][j].c!='*')) node[i][j].num = number++;
            }
        }
        
       if(flag!=1) cout << '\n';
        cout << "puzzle #" << flag++ <<endl << "Across" << endl;
        
        for(int i = 0;i<row;i++)
        {
            for(int j = 0;j<col;j++)
            {
                if(node[i][j].num != 0)
                {
                    printf("%2d.",node[i][j].num);
                    for(int k = j;(k<col)&&node[i][k].c!='*';k++)
                    {
                        cout << node[i][k].c;
                        j = k;
                    }
                    cout << '\n';
                    
                }
            }
        }
        cout << "Down" << endl;
        for(int x = 0;x<row;x++)
        {
            for(int j = 0;j<col;j++)
            {
                if(node[x][j].num !=0)
                {
                    printf("%2d.",node[x][j].num);
                    for(int k = x;(k<row)&&node[k][j].c!='*';k++)
                    {
                        node[k][j].num = 0;
                        cout << node[k][j].c;
                    }
                    cout << endl;

                }
            }
        }

    }
    return 0;

}

img

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-23 20:48
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 根据题目描述,这道题目是求解一道纵横字谜。在输入数据时,需要根据黑色块的位置和方向获取每个单词的起始位置和编号。然后,需要按照编号输出单词的方向以及内容。 在代码中,首先定义了一个NODE结构体,表示一个格子的状态,包含三个属性:num表示该格子所对应的单词编号,mon表示该格子是否是单词的起始位置,c表示该格子的内容。然后,按照题目描述的输入格式,依次读入每个格子的内容,同时,根据黑色块的位置和方向设置每个单词的起始位置和编号。 最后,按照编号输出单词的方向以及内容。 可能出现的问题: 在本地测试和调试时,代码没有出现错误。但是,提交到在线评测系统后,却出现了错误。 这种情况可能出现的原因有很多,例如:
    1. 输入数据的格式不正确,比如行数和列数不匹配等。
    2. 输出格式不正确,比如输出的结果没有按照题目要求排序等。
    3. 程序出现了逻辑错误,导致结果不正确。 根据代码的特点,在输入和处理数据时,需要多加注意。另外,可以将代码拆分成几个小的函数,方便调试和查错。 解决方案: 针对上述可能出现的问题,可以按照以下步骤解决:
    4. 检查输入数据的格式是否正确,同时查看在线评测系统提供的输入数据是否和本地测试数据相同。
    5. 检查输出格式是否正确,使用在线评测系统提供的样例数据进行测试。
    6. 若能确定输入和输出格式没有问题,则对代码进行调试,查找可能出现的逻辑错误。
    7. 将代码拆分成几个小的函数,方便调试和查错。 注意事项: 针对本题,在输入数据时需要注意以下问题:
    8. 输入数据的第一行包含着行数和列数,需要分开读取。
    9. 使用getchar函数读取掉输入数据的回车符。
    10. 若黑色块在矩阵的最后一列或者最后一行,则该块后面不存在单词,需要直接跳过。
    评论

报告相同问题?

问题事件

  • 创建了问题 3月23日

悬赏问题

  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,
  • ¥15 VB.NET使用保存对话框保存图片?
  • ¥15 centos7系统下abinit安装时make出错
  • ¥15 hbuildex运行微信小程序报错
  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应