Java 代码
class Solution {
int count=0;
public int movingCount(int threshold, int rows, int cols)
{
if(rows==0||cols==0)return 0;
boolean [][] vt=new boolean[rows][cols];
dfs(threshold,rows,cols,0,0,vt);
return count;
}
void dfs(int threshold,int rows,int cols,int x,int y,boolean [][]vt){
if(sum(x)+sum(y)>threshold)return;
int [] dx={-1,0,1,0};
int [] dy={0,1,0,-1};
vt[x][y]=true;
count++;
for(int i=0;i<4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=0&&nx<rows&&ny>=0&&ny<cols&&vt[nx][ny]==false){
dfs(threshold,rows,cols,nx,ny,vt);
}
}
}
int sum(int a){
int b=0;
while(a>0){
b+=a%10;
a/=10;
}
return b;
}
}
if(nx>=0&&nx[HTML_REMOVED]=0&&ny<cols&&vt[nx][ny]==false) 这个里面加一个sum(nx)+sum(ny)<=threshold判断,,可能就可以了,主要是可以筛选掉一些我们可能走不到,但是本身满足的。实话说,第一次做这题,一般想不到。
这个写法有问题:3 2 17 就不行
对的呀??