题目:

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

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

值0代表空单元格

值1代表产品经理

值2代表程序员

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

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

如果不可能,返回-1.

输入描述:

不固定多行(行数<=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);
}
}
}

(一)ByteDance编程题的更多相关文章

  1. 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

    只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...

  2. C算法编程题系列

    我的编程开始(C) C算法编程题(一)扑克牌发牌 C算法编程题(二)正螺旋 C算法编程题(三)画表格 C算法编程题(四)上三角 C算法编程题(五)“E”的变换 C算法编程题(六)串的处理 C算法编程题 ...

  3. C算法编程题(七)购物

    前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...

  4. C算法编程题(六)串的处理

    前言 上一篇<C算法编程题(五)“E”的变换> 连续写了几篇有关图形输出的编程题,今天说下有关字符串的处理. 程序描述 在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求 ...

  5. C算法编程题(五)“E”的变换

    前言 上一篇<C算法编程题(四)上三角> 插几句话,说说最近自己的状态,人家都说程序员经常失眠什么的,但是这几个月来,我从没有失眠过,当然是过了分手那段时期.每天的工作很忙,一个任务接一个 ...

  6. C算法编程题(四)上三角

    前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个“上三角”,有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微复杂了点. 程序描述 ...

  7. C算法编程题(三)画表格

    前言 上一篇<C算法编程题(二)正螺旋> 写东西前还是喜欢吐槽点东西,要不然写的真还没意思,一直的想法是在博客园把自己上学和工作时候整理的东西写出来和大家分享,就像前面写的<T-Sq ...

  8. C算法编程题(二)正螺旋

    前言 上一篇<C算法编程题(一)扑克牌发牌> 写东西前总是喜欢吐槽一些东西,还是多啰嗦几句吧,早上看了一篇博文<谈谈外企涨工资那些事>,里面楼主讲到外企公司包含的五类人,其实不 ...

  9. C算法编程题(一)扑克牌发牌

    前言 上周写<我的编程开始(C)>这篇文章的时候,说过有时间的话会写些算法编程的题目,可能是这两天周末过的太舒适了,忘记写了.下班了,还没回去,闲来无事就写下吧. 因为写C++的编程题和其 ...

随机推荐

  1. namenode和datanode机制

    转自:https://www.cnblogs.com/DarrenChan/p/6416043.html?utm_source=itdadao&utm_medium=referral 首先我们 ...

  2. 8-EasyNetQ之Send & Receive

    鉴于Publish/Subsrcibe和Request/Response模式是位置透明的,在这个方面,你不需要去指定消息的消费者具体所处的位置,Send/Receive模式是特别针对通过命名队列来设计 ...

  3. kernel下制作动态logo

    kernel下制作动态logo 在uboot中实现logo的好处是反映速度快. 在kernel中实现logo的好处是,不管是android还是什么其他平台,logo显示无需考虑上层平台. 参照三星平台 ...

  4. valgrind详解

    调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1.valgrind 安装包下载地址:http://valgrind.org/downloads/repository.html(使 ...

  5. NULL、0、nullptr

    C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL;foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #defi ...

  6. Ros学习——创建程序包

      1.程序包 一个程序包要想称为catkin程序包必须符合以下要求: 该程序包必须包含catkin compliant package.xml文件 这个package.xml文件提供有关程序包的元信 ...

  7. final 子类禁止重写

    <?php //子类中编写和父类中完全一样的函数,是对父类中的函数进行重写 class BaseClass{ public function test() { echo "BaseCl ...

  8. PCL—关键点检测(Harris)低层次点云处理

    博客转载自:http://www.cnblogs.com/ironstark/p/5064848.html 除去NARF这种和特征检测联系比较紧密的方法外,一般来说特征检测都会对曲率变化比较剧烈的点更 ...

  9. CF938D Buy a Ticket

    这个题都想不出来,感觉

  10. C# 实现文件(夹)在ftp服务器间的同步【无需将文件(夹)保存到本地】

    C#实现不同ftp服务器间文件(夹)同步 图1 实现不同ftp服务器间文件(夹)同步的实现思路图 /// <summary> /// 将文件夹1从ftp服务器1移到ftp服务器2文件夹2 ...