典型的dp了,用记忆化搜索很快写出来 dp[][]=new [][]; int dfs( int i,int j,int k){ if( dp[i][j]!=-1) return dp[i][j]; int sum=0; for( t -->k ){ if( t!=j) sum+=dfs(i+1,t,k) } dp[i][j]=sum; return sum; }