字节笔试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号