本文共 1089 字,大约阅读时间需要 3 分钟。
下图有误:最后输出应该为f[n][m][k][0~13](因为可能存在一个也不取的情形,所以第4维应该包括0)
代码:import java.util.*;public class Main{ static int[][] map = new int[60][60]; static int[][][][] f = new int[60][60][15][14]; static int mod = 1000000007; static int n; static int m; static int k; public static void main(String[] args){ Scanner scan = new Scanner(System.in); n = scan.nextInt(); m = scan.nextInt(); k = scan.nextInt(); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ map[i][j] = scan.nextInt(); map[i][j]++; } } f[1][1][1][map[1][1]]=1; f[1][1][0][0] = 1; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(i==1&&j==1) continue; for(int u =0;u<=k;u++){ for(int v=0;v<=13;v++){ f[i][j][u][v] = (f[i-1][j][u][v]+f[i][j-1][u][v])%mod; if(u>0&&map[i][j]==v) for(int w=0;w
时间复杂度:O( n ∗ m ∗ k ∗ c 2 n*m*k*c^2 n∗m∗k∗c2)
转载地址:http://zllzi.baihongyu.com/