头条笔试

请问下大家,第二题这样什么只能过80%,提示数组越界?不可能啊
import java.util.Scanner;

/**
 * Created by forcht on 2018/8/22.
 */
public class Main {
   static int[] xt={0,0,-1,1};
   static int[] yt={-1,1,0,0};
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        if(n<=0)return;
        int[][] map=new int[n][n];
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                map[i][j]=scanner.nextInt();
            }
        }
        int count=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(map[i][j]==1){
                    dfs(map,i,j,n);
                    count++;
                }
            }
        }
        System.out.println(count);
    }
    static void dfs(int[][] map,int x,int y,int n){
        if(x<0||x>=n||y<0||y>=n||map[x][y]==0)return;
        map[x][y]=0;
        for(int i=0;i<4;i++){
            dfs(map,x+xt[i],y+yt[i],n);
        }
    }

}

全部评论
一样的思路
点赞 回复 分享
发布于 2018-09-09 12:36
找到原因了,当输入n太大,比如500*500时候,矩阵全是1时,会爆栈。这道题用递归做不合适啊
点赞 回复 分享
发布于 2018-09-09 17:43
我也是。。
点赞 回复 分享
发布于 2018-09-09 12:37
me too
点赞 回复 分享
发布于 2018-09-09 12:51
题目的M和矩阵大小不同,可能是出题人员打错啦。。
点赞 回复 分享
发布于 2018-09-09 12:56
请仔细看说明,说了一定是数组越界了?
点赞 回复 分享
发布于 2018-09-09 12:58
我也是....
点赞 回复 分享
发布于 2018-09-09 13:51
同。 听说矩阵的维度长宽不一定一样,坑
点赞 回复 分享
发布于 2018-09-09 14:00
我还没见过这题拿JAVA过的老哥
点赞 回复 分享
发布于 2018-09-09 15:33
我也是 80%
点赞 回复 分享
发布于 2018-09-09 15:55
你试试1000×1000全是一的矩阵看看
点赞 回复 分享
发布于 2018-09-09 16:05

相关推荐

10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务