1476. Lunar Code
生活随笔
收集整理的這篇文章主要介紹了
1476. Lunar Code
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
http://acm.timus.ru/problem.aspx?space=1&num=1476
由于前一列對后一列有影響,所以需要保持前一列的狀態(tài),
但無需用狀態(tài)壓縮來保存(也保存不了) 只需要保存前一列以 k 個0結(jié)尾的個數(shù)就可以
代碼:
import java.math.BigInteger;
import java.util.Scanner;public class Main {/*** @param args*/static final int N = 44;public static void main(String[] args) {// TODO Auto-generated method stubBigInteger[][] dp = new BigInteger[N][N];BigInteger[][] d = new BigInteger[N][N];BigInteger[][] c = new BigInteger[N][N];for(int i=0;i<N;++i){for(int j=0;j<N;++j){dp[i][j]=d[i][j]=c[i][j]=BigInteger.ZERO;}}for(int i=0;i<N;++i){for(int j=0;j<=i;++j){if(j==0||i==j){c[i][j]=BigInteger.ONE;}else{c[i][j]=c[i-1][j].add(c[i-1][j-1]);}}}Scanner in = new Scanner(System.in);int n=in.nextInt();int m=in.nextInt();int k=in.nextInt();for(int i=0;i<=n;++i){for(int j=0;j<=i;++j){for(int l=0;l<=(n-i);++l){if(i-j<=k){d[i][j+l]=d[i][j+l].add(c[i][j].multiply(c[n-i][l]));}}}}dp[0][0]=BigInteger.ONE;BigInteger ans=BigInteger.ZERO;for(int i=0;i<=m;++i){for(int j=0;j<=n;++j){if(i==m){ans=ans.add(dp[i][j]);continue;}for(int l=0;l<=n;++l){dp[i+1][l]=dp[i+1][l].add(dp[i][j].multiply(d[j][l]));}}}System.out.println(ans);}
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/liulangye/p/3355653.html
總結(jié)
以上是生活随笔為你收集整理的1476. Lunar Code的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 激光治疗多少钱啊?
- 下一篇: Bossie Awards 2013:最