存在一个m*n的二维数组,其成员取值范围为0或1。其中值为1的成员具备扩散性,
每经过1S,将上下左右值为0的成员同化为1。
二维数组的成员初始值都为0,将第[i,j]和[k,l]两个位置上元素修改成1后,
求矩阵的所有元素变为1需要多长时间。
输入描述:
前两个数是矩阵m*n,中间两个数是第一个点的坐标,最后两个数是第二个点的坐标
其中这两个点初始为1,其他点初始为0
输出描述:
输出矩阵的所有元素变为1所需要秒数。
示例1:
输入
4,4,0,0,3,3
输出
3
let str = '4,4,0,0,3,3'
let strArr = str.split(',')
let m =parseInt(strArr[0]),n=parseInt(strArr[1])
let one1 = strArr[2],one2 = strArr[3]
let two1 = strArr[4],two2 = strArr[5]
let arr = []
for(let i=0;i<m;i++){
let item = []
for(let o=0;o<n;o++){
item.push(0)
}
arr.push(item)
}
arr[one1][one2] = 1
arr[two1][two2] = 1
let time = 0
test()
console.log(time);
function test(){
while (!checkOver()){
let arr2 = JSON.parse(JSON.stringify(arr))
for(let i=0;i<arr.length;i++){
for(let o=0;o<arr[i].length;o++){
if(arr[i][o]===1){
arr2[i][o]=1
// 上
if(i-1>=0){
arr2[i-1][o] = 1
}
// 下
if(i+1<=arr.length-1){
arr2[i+1][o] = 1
}
// 左
if(o-1>=0){
arr2[i][o-1] = 1
}
// 右
if(o+1<=arr[i].length-1){
arr2[i][o+1] = 1
}
}
}
}
arr = arr2
time++
}
}
function checkOver(){
for(let i of arr){
for(let o of i){
if(o===0){
return false
}
}
}
return true
}