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;
}