poj 1283(递推ordp)
生活随笔
收集整理的這篇文章主要介紹了
poj 1283(递推ordp)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:有n臺電腦要有k輛卡車去運,每臺卡車不能為空,問有多少種運輸方案,注:假設有7臺電腦,3輛卡車,1,1,5和1,5,1和5,1,1被視為同一種。
解題思路:遞推思想,dp[i][j]表示i輛卡車運輸j臺電腦的方案數,可以這么理解,第i輛卡車放1臺電腦,dp[i-1][j-1],每一輛卡車至少有兩臺電腦,dp[i][j-i],所以dp[i][j] = dp[i-1][j-1] + dp[i][j-i]。
#include<stdio.h> #include<string.h>__int64 dp[210][210]; void init() {int i;for(i=1;i<=200;i++){dp[i][i]=dp[1][i]=dp[i][0]=dp[0][i]=1;}for(i=2;i<=200;i++){for(int j=i+1;j<=200;j++){dp[i][j]=dp[i-1][j-1]+dp[i][j-i];}} }int main() {int n,k;init();while(scanf("%d%d",&n,&k),n||k){printf("%I64d\n",dp[k][n]);}return 0; }
總結
以上是生活随笔為你收集整理的poj 1283(递推ordp)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 4495(hash+二分+dp)
- 下一篇: ueditor 在线附件和在线图片路径错