第IV章再帰アルゴリズム1206:アップルプット

1206:アップルプット

制限時間:1000msのメモリ制限:65536キロバイト
の提出:6551数によって:4182
[タイトル]が記述
いくつかの空のプレートが保持できるように、同じプレートのM Nの数に同じリンゴを、どのように多くの種を尋ねました異なる点システム?5,1,1及び1,5,1点は同じ方法である(Kで表します)。

[入力]
最初の行は、T(0≤t≤20)試験データの数です。各行は、スペースで区切って、以下の二つの整数MとNが含まれています。1≤M、N≤10。

[出力]
対応する出力ラインK.各N個のデータ入力およびMは、

[サンプル]入力
1
。7 3
[出力]サンプル
8


アイデア:(M、N)= 1、N = 1、M = 0 //明らかつのみ皿ときだけ一つの方法、さらにだけでなく、リンゴリンゴのみ放電プロセス。//エンドボーダー

F(m、n)がM <N、プレートは確かに利用可能なこの時間は、単にその上にM Mプレートリンゴを置く= F(M、M)M <N //。F(M、M)。

F(M、N)= F(M、N-1)+ F(MN、N)、M> = N // M> = Nだけでなく、2例に分割し、そしてプレートを空のトレイではありません空にします。

プレートの空の場合の場合:少なくとも一つのプレート、この時点では空であり、それは質問M N-1へと皿にリンゴに変換されます。F(M、N-1)。

ケースは、空のプレートの場合:各プレートは、最初のリンゴを入れていない、それは問題MNリンゴの皿Nに変換します。F(MN、N)。

#include<iostream>
#include<cstring>
using namespace std;
int f[1001][1001];
int main(){
	int m,n,a,b,t;
	cin>>t;
	for(m=0;m<=10;m++)
	 for(n=0;n<=10;n++)
	{ 
		if(m==0||n==1)
		 f[m][n]=1;
		if(n>m)
	 f[m][n]=f[m][m];
		else
		f[m][n]=f[m][n-1]+f[m-n][n];
			
	}
	while(t--)
	{
	 cin>>a>>b;
	 cout<<f[a][b]<<endl;	
	}	
	return 0;
}
公開された108元の記事 ウォンの賞賛2 ビュー2058

おすすめ

転載: blog.csdn.net/zqhf123/article/details/104451746