#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int Tmax=105,inf=0x3f3f3f3f;
int f[Tmax][Tmax];
int dp(int n,int m)
{
if(f[n][m]<inf) return f[n][m];//如果已经算过了就不需要再算了 ,
if(m==1) return f[n][m]=n;
if(m==0) return f[n][m]=0;
if(n==1) return f[n][m]=1;
if(n==0) return f[n][m]=0;
int i;
for(i=1;i<=n;i++)
f[n][m]=min(f[n][m],1+max(dp(i-1,m-1),dp(n-i,m)));
return f[n][m];
}
int main()
{
int n,m;
memset(f,0x3f,sizeof(f));//初始化最大值
while(scanf("%d%d",&n,&m)==2)
printf("%d\n",dp(n,m));
return 0;
}
练习4 - 鸡蛋的硬度
最新推荐文章于 2023-07-27 14:51:29 发布