public class MoveCount { public int MoveCount(int k ,int m,int n){ boolean[][] flag=new boolean[m][n]; int count=MoveCountCore(k,m,n,0,0,flag); return count; } private int MoveCountCore(int k, int m, int n, int i, int j, boolean[][] flag) { //不满足条件时 返回0 if(i<0||j<0||j>=n||i>=m||sum(String.valueOf(i))+sum(String.valueOf(j)) > k ||flag[i][j]==true) { return 0; } In Flag [I] [J] = to true ; // case of calculating the remaining four squares of the condition is satisfied and ➕1 return . 1 + MoveCountCore (K, m, n-,. 1 + I, J, In Flag) + MoveCountCore (K, m, n-,. 1-I, J, In Flag) + MoveCountCore (K, m, n-, I, J -1, In Flag) + MoveCountCore (K, m, n-, I, J +. 1 , In Flag); } /* Calculating a sum of each digital number */ private int sum(String s){ int sum=0; for(int i = 0;i<s.length();i++){ sum += s.charAt(i)-'0'; } return sum; } public static void main(String[] args) { } }