POJ1664(简单动态规划)

时间:2023-03-08 21:08:11
POJ1664(简单动态规划)
 #include<iostream>
#include<string>
#include<cstring>
using namespace std;
int f[][];
void F(int m,int n)
{
int i,j;
for(int i=;i<=m;i++)
{
f[i][]=;
f[i][]=;
} for(int j=;j<=n;j++)
{
f[][j]=;
f[][j]=;
} for(i=;i<=m;i++)
for(j=;j<=n;j++)
{
if(i>=j) //当苹果数大于盘子的时候 ①假设有一个空盘 ②另外为n个盘子都不为空,则先将n个苹果一个一个放入n的盘子中,剩下的m-n个苹果再放入n个盘子中。此放法就相当于m-n个苹果放n个盘子里面,有f[m-n][n]种放法。
f[i][j]=f[i][j-]+f[i-j][j];
if(i<j) //当盘子数大于苹果数的时候 相当于那些多余的盘子里面没有东西(抽屉原理?)
f[i][j]=f[i][i]; }
} int main()
{
int t,M,N,K;
cin>>t;
while(t>)
{
t--;
cin>>M>>N;
memset(f,,sizeof(f));
F(M,N) ;
cout<<f[M][N]<<endl; } return ;
}
Memory                                                            Time  
216K                                                             0MS