(一)ByteDance编程题

时间:2023-03-09 00:38:15
(一)ByteDance编程题

题目:

公司的程序员不够用了,决定把产品经理都转变为程序员以解决开发时间长的问题。

在给定的矩形网格中,每个单元格可以有以下三个值之一:

值0代表空单元格

值1代表产品经理

值2代表程序员

每分钟,任何与程序员(在4个正方向上)相邻的产品经理都会变成程序员。

返回直到单元格中没有产品经理为止所必须经过的最小分钟数。

如果不可能,返回-1.

(一)ByteDance编程题

输入描述:

不固定多行(行数<=10),每行是按照空格分割的数字(不固定,每行数字个数<=10)

其中每个数组项的取值仅为0、1、2三种

(读取时可以按行读取,直到读取到空行为止,再对读取的所有行做转换处理)

输出描述:

如果能将所有产品经理变成程序员,则输出最小的分钟数。

如果不能够将所有的产品经理变成程序员,则返回-1。

示例1

输入:

0 2

1 0

输出:

-1

示例2

输入:

1 2 1

1 1 0

0 1 1

输出:

3

示例3

输入:

1 2

2 1

1 2

0 1

0 1

1 1

输出:

4

我的程序:

 import java.util.Scanner;

 public class Main {
public static void main(String[] args){
boolean flag=false;
int sum=0; //标记变化次数
String a =null;
Scanner in=new Scanner(System.in);
String arr=in.nextLine();
int p=arr.replace(" ","").length();
while(in.hasNextLine()){ //如果下行不为空行
a=in.nextLine(); //a继续接收当前行
if(a.length() == 0){ //如果a串为回车符,则跳出循环
break;
}
arr+=a; //把输入的数字存储到一个字符串arr中
} //将空格去掉
arr=arr.replace(" ",""); //把字符串arr存到字符数组array中
char []array=arr.toCharArray(); //判断字符串arr中1的前后3、1个位置是否为2,其中排除掉左边的数,
// 无前1,右边的数,无后1,左边的数为能被列数整除,右边的数即为(当前位置+1)能被列数整除
while(true){
flag=false;
for(int i=0;i<arr.length();i++){
if(arr.charAt(i)=='1'){
if((i+1)%p==0){ //除去与后一号比较的情况
if( (i-p)>=0 ){
if(arr.charAt(i-p)=='2'){
array[i]='2'; //把字符数组array中的该位置的1变为2
flag=true;
}
}
if((i+3)<arr.length()){
if(arr.charAt(i+p)=='2'){
array[i]='2'; //把字符数组array中的该位置的1变为2
flag=true;
}
}
if((i-1)>=0){
if(arr.charAt(i-1)=='2'){
array[i]='2'; //把字符数组array中的该位置的1变为2
flag=true;
}
}
}else {
if( (i-p)>=0 ){
if(arr.charAt(i-p)=='2'){
array[i]='2'; //把字符数组array中的该位置的1变为2
flag=true;
}
}
if((i+3)<arr.length()){
if(arr.charAt(i+p)=='2'){
array[i]='2'; //把字符数组array中的该位置的1变为2
flag=true;
}
}
if((i+1)<arr.length()){
if(arr.charAt(i+1)=='2'){
array[i]='2'; //把字符数组array中的该位置的1变为2
flag=true;
}
}
if(i%p==0){ //除去与前一号比较的情况
continue;
}
if((i-1)>=0){
if(arr.charAt(i-1)=='2'){
array[i]='2'; //把字符数组array中的该位置的1变为2
flag=true;
}
}
}
}
}
if(flag){
sum++; //有1发生变化,sum加一次
}else {
break;
}
//把数组array赋值给arr
arr=new String(array);
}
if(sum!=0){
System.out.println(sum);
}else {
System.out.println(-1);
}
}
}