今日头条笔试第一题,求解输入输出?

请问我输入输出哪里有毛病呀?

package com.sonihr.NowCoderExam;/*
@author 黄大宁Rhinos
@date 2019/4/14 - 10:10
**/


import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Scanner;

public class ZiJieTiaoDong4_14Test1 {

    public static int change4Dir(int i,int j,int rows,int cols,int[][] matrix){
        if(i<0||i>=rows||j<0||j>=cols){
            return 0;
        }
        if(matrix[i][j]==1){
            matrix[i][j] = -1;
            return 1;
        }
        return 0;

    }

    public static int changeToProgrammer(int rows,int cols,int[][] matrix){
        int time = 0;
        int oneCnt = 0;
        for(int i=0;i<rows;i++){
            for(int j=0;j<cols;j++){
                if(matrix[i][j]==1)
                    oneCnt++;
            }
        }
        int preOneCnt = 0;
        while(oneCnt!=0&&oneCnt!=preOneCnt){
            time++;
            preOneCnt=oneCnt;
            for(int i=0;i<rows;i++){
                for(int j=0;j<cols;j++){
                    if(matrix[i][j]==2){
                        int changeCnt =
                                change4Dir(i+1,j,rows,cols,matrix)+
                                        change4Dir(i-1,j,rows,cols,matrix)+
                                        change4Dir(i,j+1,rows,cols,matrix)+
                                        change4Dir(i,j-1,rows,cols,matrix);
                        oneCnt -= changeCnt;
                    }
                }
            }
            for(int i=0;i<rows;i++){
                for(int j=0;j<cols;j++){
                    if(matrix[i][j]==-1)
                        matrix[i][j]=2;
                }
            }
        }

        if(oneCnt==0)
            return time;
        else
            return -1;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<>();
        while(in.hasNextLine()){
            String line = in.nextLine();
            if(!line.equals(""))
                list.add(line);
            else{
                int rows = list.size();
                int cols = list.get(0).split(" ").length;
                int[][] matrix = new int[rows][cols];
                for(int i=0;i<rows;i++){
                    String[] str = list.get(i).split(" ");
                    for(int j=0;j<cols;j++){
                        matrix[i][j]= Integer.valueOf(str[j]);
                    }
                }
                    System.out.println(changeToProgrammer(rows,cols,matrix));
                list.clear();
            }

        }
    }
}

/*
1 2 1
1 1 0
0 1 1

1 2
2 1
1 2
0 1
0 1
1 1

*/
#笔试题目##春招##Java#
全部评论
我用python写的,本地ide也没有问题。。。结果发上去显示语法错误或者数组越界
点赞 回复 分享
发布于 2019-04-14 12:48
String确实不行,转成int就没问题了
点赞 回复 分享
发布于 2019-04-14 12:53
java本地ide没问题,上去说输出太多。。。。
点赞 回复 分享
发布于 2019-04-14 12:56
# 我用python3这样读的数据 def read(): data = [] while True: try: line = input() except EOFError as e: print(data) return data ary = [i for i in map(int, line.split())] data.append(ary)
点赞 回复 分享
发布于 2019-04-14 13:42

相关推荐

点赞 评论 收藏
分享
躺尸修仙中:因为很多92的也去卷中小厂,反正投递简历不要钱,面试不要钱,时间冲突就推,不冲突就面试积累经验
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务