这道题有点水。。
只是一个动态规划。。
f[i][j]表示i个鸡蛋从第j层开始试需要几次。。
dp方程还是蛮好想的。。
只需相通,不论几个鸡蛋在第几层摔策略都是一样的就行了。。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int f[110][110];
int main() {
int n,m;
while(scanf("%d%d",&n,&m)!=EOF) {
memset(f,0,sizeof(f));
if(m==1) {
printf("%d\n",n);
continue;
}
for(int i=1;i<=100;i++) {
f[i][1]=i;
for(int j=2;j<=10;j++) {
f[i][j]=i;
for(int k=2;k<=i;k++)
f[i][j]=min(f[i][j],max(f[k-1][j-1],f[i-k][j])+1);
}
}
printf("%d\n",f[n][m]);
}
return 0;
}