C++遞迴演算法之鳴人的影分身

TOP-SECRET發表於2017-07-06

鳴人的影分身

Description

在火影忍者的世界裡,令敵人捉摸不透是非常關鍵的。我們的主角漩渦鳴人所擁有的一個招數——多重影分身之術——就是一個很好的例子。


影分身是由鳴人身體的查克拉能量製造的,使用的查克拉越多,製造出的影分身越強。

針對不同的作戰情況,鳴人可以選擇製造出各種強度的影分身,有的用來佯攻,有的用來發起致命一擊。

那麼問題來了,假設鳴人的查克拉能量為M,他影分身的個數為N,那麼製造影分身時有多少種(用K表示)不同的分配方法?(影分身可以被分配到0點查克拉能量)

Input

第一行是測試資料的數目t(0 <= t <= 20)。以下每行均包含二個整數M和N,以空格分開。1<=M,N<=10。

Output

對輸入的每組資料M和N,用一行輸出相應的K。 Sample Input

1
7 3

Sample Output

8

程式碼

#include<cstdio>
int main()
{
	int i,j,k,n,m;
	int t;
	scanf("%d",&t);
	for(int o=1;o<=t;o++)
	{
		int f[101][101];
		scanf("%d%d",&m,&n);
		for(i=0;i<=m;i++)
			for(j=0;j<=n;j++)
			{
				if(i==0||j==1) f[i][j]=1;
				else
				{
					if(j>i) f[i][j]=f[i][i];
					else f[i][j]=f[i][j-1]+f[i-j][j];
				}
			}
		printf("%d\n",f[m][n]);
	}
	return 0;
}




相關文章