题目描述
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
解答:(见代码注释)
function movingCount(threshold
, rows
, cols
)
{
var count
=0
for(var i
=0;i
<rows
;i
++){
for(var j
=0;j
<cols
;j
++){
var adds
=add(i
,j
)
if(add(i
,0)>threshold
){
return count
}
if(adds
<=threshold
){
count
++
}else if(i
>=1&&adds
>threshold
&&(j
+1<cols
)){
for(j
=j
+1;j
<cols
;j
++){
while(add(i
-1,j
)<=threshold
&&add(i
,j
)<=threshold
){
count
++
j
++
}
}
}else{
j
=cols
}
}
}
return count
}
function add(rows
,cols
){
var rowstr
=''+rows
var rowlen
=rowstr
.length
var colstr
=''+cols
var collen
=colstr
.length
var row
=0
var col
=0
for(var i
=0;i
<rowlen
;i
++){
row
+=parseInt(rowstr
[i
])
}
for(var i
=0;i
<collen
;i
++){
col
+=parseInt(colstr
[i
])
}
return row
+col
}