地上有一个 m 行和 n 列的方格。一个机器人从坐标 0,0 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 k 的格子。 例如,当 k 为 18 时,机器人能够进入方格(35,37),因为 3+5+3+7 = 18 。但是,它不能进入方格(35,38),因为 3+5+3+8 = 19 。请问该机器人能够达到多少个格子?
数据范围:
, 
一行三个正整数由空格分开,分别代表行数 m ,列数 n ,和坐标数位之和的阈值 k 。
一个正整数,代表该机器人能够到达的格子数量。
3 3 6
9
1 1 1
1
package main import ( "fmt" ) func main() { var m,n,k int fmt.Scan(&m,&n,&k) mat:=make([][]int,m) for i,_:=range mat{ mat[i]=make([]int,n) } ans:=0 var dfs func(int,int) dfs=func(i,j int){ if i<0||i>=m||j<0||j>=n||mat[i][j]==1||calc(i,j)>k{ return } mat[i][j]=1 ans++ dfs(i+1,j) dfs(i,j+1) dfs(i-1,j) dfs(i,j-1) } dfs(0,0) fmt.Print(ans) } func calc(i,j int)int{ ans:=0 for i>0{ ans+=i%10 i/=10 } for j>0{ ans+=j%10 j/=10 } return ans }