题目:

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

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

值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. QTP11使用DOM XPath以及CSS识别元素对象

    我们知道,像DOM,Html,CSS,XPath等对对象的识别策略广泛运用于一些开源的工具,例如:Selenium,Watir,Watir-Webdriver,以前qtp版本是不支持这些东西的,现在q ...

  2. python 面向对象之反射及内置方法

    面向对象之反射及内置方法 一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静 ...

  3. 微信开发准备(二)--springmvc+mybatis项目结构的搭建

    转自:http://www.cuiyongzhi.com/post/34.html 前面一篇有说道如何在MyEclipse中搭建maven项目,这里将继续介绍如何在搭建好的基础maven项目中引入我们 ...

  4. JSP 按钮点击,onclick事件中的AJAX不执行可能的原因

    <button onclick="deleteAccount()"  >删除</button> 缺少了 type="button" &l ...

  5. dubbo+zookeeper+dubboadmin环境搭建

    4.环境搭建 4.1.zookeeper注册中心的配置安装(在windows平台下,Linux类似,见官方文档)(Redis注册中心安装,简易注册中心安装,简易监控中心安装,见官方文档) 下载zook ...

  6. java多线程环境单例模式实现详解

    Abstract 在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制,也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用.这个机制在s ...

  7. Zbar -- 源码分析

    博客转载自:https://blog.csdn.net/sunflower_boy/article/details/50783179 //Img_scanner.c 文件内 int zbar_scan ...

  8. Entity Framework Tutorial Basics(25):Delete Single Entity

    Delete Entity using DBContext in Disconnected Scenario: We used the Entry() method of DbContext to m ...

  9. Inheritance with EF Code First: Part 1 – Table per Hierarchy (TPH)

    以下三篇文章是Entity Framework Code-First系列中第七回:Entity Framework Code-First(7):Inheritance Strategy 提到的三篇.这 ...

  10. WordCount测试小程序的实现

    一.GitHub地址: https://github.com/245553473/WordCount 二.PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 ...