資訊學奧賽一本通 1300 雞蛋的硬度#線性動態規劃#
阿新 • • 發佈:2019-02-10
雞蛋的硬度
題目描述
求最壞情況的最少情況
=min(max()) 最大值最小!
so分析開始了
來個圖就可以了。
狀態轉移方程
f[i][j]=min(f[i][j],max(f[k-1][j-1],f[n-k][j]));
程式碼如下
#include < cstdio >
#include < algorithm >
#include < cstring >
using namespace std;
int f[101][11],n,m,t;
int main(){
memset(f,127 /3,sizeof(f));//初始化一個很大的數
for (int i=1;i<=100;i++) f[i][1]=i;//(只有一個雞蛋為層數)
for (int j=0;j<=10;j++) f[0][j]=0;//(沒有雞蛋為0)
for (int i=1;i<=100;i++)
for (int j=1;j<=10;j++)
for (int k=1;k<=i;k++)
f[i][j]=min(max(f[k-1][j-1],f[i-k][j])+1,f[i][j]);
while (scanf("%d%d",&n,&m)==2 )printf("%d\n",f[n][m]);
return 0;
}