1300:鸡蛋的硬度
简单的解释在代码里有进行说明。
具体的题解可参考 大佬 。
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 const int N=105; 5 int f[N][N]; 6 7 int main(){ 8 int n,m; 9 while(cin>>n>>m){ 10 for(int i=1;i<=n;i++) 11 for(int j=1;j<=m;j++) 12 f[i][j]=i;//初始化为最坏情况 13 //f[k-1][j-1]表示在第k层砸下一个鸡蛋并且碎了后需要采取的策略 14 //f[i-k][j]表示在第k层砸下一个鸡蛋没碎需要采取的策略 15 for(int i=1;i<=n;i++) 16 for(int k=1;k<=i;k++) 17 for(int j=2;j<=m;j++) 18 f[i][j]=min(f[i][j],max(f[k-1][j-1],f[i-k][j])+1); 19 cout<<f[n][m]<<endl; 20 } 21 return 0; 22 }