字节笔试0926
第四题
是个背包问题,我把状态转移方程写错了
import java.util.Scanner;
public class Z4 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = 3 + 3; // n个背包
        int m = 12 * n; // 至少放m个东西
        Long[][] dp = new Long[n+1][m+1];
        for(int i =0; i < n+1; i++) {
            for(int j=0; j<m+1; j++) {
                dp[i][j] = 0L;
            }
        }
        for(int j = 0; j <= 20; j++) {
            dp[1][j] = (long) (21 - j);
        }
        for(int i = 0; i <= n; i++) {
            dp[i][0] = 1L;
            for(int ii=0; ii<i; ii++) {
                dp[i][0] *= 21;
            }
        }
        for(int i=2; i<=n; i++) {
            for(int j=1; j<=m; j++) {
                int p = 0;
                if(j > 21){
                    p = j - 21;
                }
                for(; p <= j; p++) {
                    dp[i][j] += (dp[i-1][p] * (21-j+p)) % 202220222022L;
                }
                dp[i][j] = dp[i][j] % 202220222022L;
            }
        }
        for(int i =0; i <= n; i++){
            System.out.print("i="+i+":");
            for(int j = 0; j <= m; j++){
                System.out.print(dp[i][j]+ " ");
            }
            System.out.println();
        }
        System.out.println(dp[n][m]);
    }
}
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号