ssl1016 OJ8467-数的划分 鸣人的影分身【各种dp之8 7】
數(shù)的劃分
Description
將整數(shù)n分成k份,且每份不能為空,任意兩份不能相同(不考慮順序)。
例如:n=7,k=3 (6<n<=200,2<=k<=6),下面三種分法被認(rèn)為是相同的。
1,1,5; 1,5,1; 5,1,1;
問有多少種不同的分法。
Input
n,k
Output
一個整數(shù),即不同的分法。
Sample Input
7 3
Sample Output
4 {四種分法為:1,1,5;1,2,4;1,3,3;2,2,3;}
解題思路
用f[i][j]來表示把j分成i份時的最優(yōu)解
f[i][j]=f[i][j-i]+f[i-1][j-1]
代碼
#include<cstdio> int n,k,a[10][205]; int main() {scanf("%d%d",&n,&k);a[0][0]=1;for (int i=1;i<=k;i++) for (int j=i;j<=n;j++)a[i][j]=a[i][j-i]+a[i-1][j-1];printf("%d",a[k][n]); }鳴人的影分身
描述
在火影忍者的世界里,令敵人捉摸不透是非常關(guān)鍵的。我們的主角漩渦鳴人所擁有的一個招數(shù)——多重影分身之術(shù)——就是一個很好的例子。
影分身是由鳴人身體的查克拉能量制造的,使用的查克拉越多,制造出的影分身越強(qiáng)。
針對不同的作戰(zhàn)情況,鳴人可以選擇制造出各種強(qiáng)度的影分身,有的用來佯攻,有的用來發(fā)起致命一擊。
那么問題來了,假設(shè)鳴人的查克拉能量為M,他影分身的個數(shù)為N,那么制造影分身時有多少種(用K表示)不同的分配方法?(影分身可以被分配到0點(diǎn)查克拉能量)
輸入
第一行是測試數(shù)據(jù)的數(shù)目t(0 <= t <= 20)。以下每行均包含二個整數(shù)M和N,以空格分開。1<=M,N<=10。
輸出
對輸入的每組數(shù)據(jù)M和N,用一行輸出相應(yīng)的K。
樣例輸入
1
7 3
樣例輸出
8
解題思路
這道題數(shù)據(jù)小的不行,我們可以用數(shù)的劃分的方法,只不過是把分成1-m份的和加起來而已。
代碼
#include<cstdio> #include<cstring> using namespace std; int n,k,a[15][15],maxs,t,e; int main() {scanf("%d",&t);for (int ti=1;ti<=t;ti++){maxs=0;scanf("%d%d",&n,&e);for (int k=1;k<=e;k++){memset(a,0,sizeof(a));a[0][0]=1;for (int i=1;i<=k;i++)for (int j=i;j<=n;j++)a[i][j]=a[i][j-i]+a[i-1][j-1];maxs+=a[k][n];}printf("%d\n",maxs);} }總結(jié)
以上是生活随笔為你收集整理的ssl1016 OJ8467-数的划分 鸣人的影分身【各种dp之8 7】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OJ4121 and OJ2968-股票
- 下一篇: 2017电脑配置(2017电脑配置400