Hokachi 2023-01-03 22:04 采纳率: 66.7%
浏览 63

为了解决蓝桥杯真题“剪格子”,需要一个Java方法:判断是否联通。

问题遇到的现象和发生背景

AcWing1206.剪格子
第四届蓝桥杯省赛JAVAA/C组真题
原题和我的思路都在https://blog.csdn.net/Hokachi/article/details/128539208

遇到的现象和发生背景,请写出第一个错误信息

我的“判断是否联通”方法有bug,不能判断下图情况。

img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

//判断是否相连
    public static boolean isLink(boolean[][] read){
        boolean[][] isRead = read;
        int lineNum = isRead.length - 1;
        int columnNum = isRead[0].length - 1;
        for(int i = 0; i < lineNum + 1; i++){
            for(int j = 0; j < columnNum + 1; j++){//遍历
                if(i ==0 && j ==0 && isRead[1][0] == isRead[0][1] && isRead[1][0] != isRead[0][0]){//左上角
                    return false;
                }else
                if(i == lineNum && j == 0 && isRead[lineNum - 1][0] == isRead[lineNum][1] && isRead[lineNum][1] != isRead[lineNum][0]){//左下角
                    return false;
                }else
                if(i == 0 && j == columnNum && isRead[0][columnNum - 1] == isRead[1][columnNum] && isRead[1][columnNum] != isRead[0][columnNum]){//左上角
                    return false;
                }else
                if(i == lineNum && j == columnNum && isRead[lineNum][columnNum - 1] == isRead[lineNum - 1][columnNum] && isRead[lineNum - 1][columnNum] != isRead[lineNum][columnNum]){//右下角
                    return false;
                }else
                if(i ==0 && j != 0 && j != columnNum){//上边
                    if(isRead[0][j - 1] == isRead[1][j] == isRead[0][j + 1] && isRead[0][j + 1] != isRead[i][j]){
                        return false;
                    }
                }else
                if(j == 0 && i != 0 && i != lineNum){//左边
                    if (isRead[i - 1][0] == isRead[i+1][0] == isRead[i][1] && isRead[i][1] != isRead[i][j]){
                        return false;
                    }
                }else
                if(i == lineNum && j !=0 && j != columnNum){//下边
                    if (isRead[lineNum][j - 1] == isRead[lineNum - 1][j] == isRead[lineNum][j + 1] && isRead[lineNum][j + 1] != isRead[i][j]){
                        return false;
                    }
                }else
                if (j == columnNum && i != 0 && i != lineNum){//右边
                    if(isRead[i - 1][columnNum] == isRead[i][columnNum - 1] == isRead[i + 1][columnNum]){
                        return false;
                    }
                }else if(i != 0 && i !=lineNum && j !=0 && j != columnNum){//剩余的
                    if(isRead[i - 1][j] == isRead[i + 1][j] == isRead[i][j - 1] == isRead[i][j + 1] && isRead[i][j + 1] != isRead[i][j]){
                        return false;
                    }
                    return true;
                }
            }
        }
        return false;
    }
运行结果及详细报错内容

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

https://blog.csdn.net/Hokachi/article/details/128539208

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

一个没有bug的“判断是否联通”的方法。

  • 写回答

1条回答 默认 最新

  • 可爱病猫 2023-01-06 13:06
    关注

    兄弟,还需要吗?刚出炉的Java算法篇【剪格子】

    评论

报告相同问题?

问题事件

  • 提问应符合社区要求 1月5日
  • 创建了问题 1月3日

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据