zoukankan      html  css  js  c++  java
  • [xdoj1007]易碎的鸟蛋(dp)

    解题思路:f[n,m]表示n层楼、m个鸡蛋时所需要的最小次数,则

    转移方程为:f[n,m] = min{ 1+max(f[i-1,m-1], f[n-i,m]) | i=1..n }初始条件:f[i,0]=0(或f[i,1]=i),对所有i

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    #include<iostream>
    #include<cmath>
    using namespace std;
    typedef long long ll;
    #define inf 0x3f3f3f3f
    int arr[1002][1002];
    int main(){
        int n,m;
        while(cin>>m>>n){
            for(int i=0;i<=n;i++) arr[i][0]=0;
            for(int i=0;i<=n;i++) arr[i][1]=i;
            for(int i=0;i<=m;i++) arr[0][i]=0;
            for(int i=0;i<=m;i++) arr[1][i]=1;
            for(int i=2;i<=n;i++){
                for(int j=2;j<=m;j++){
                    arr[i][j]=inf;
                }
            }
            for(int i=2;i<=n;i++){
                for(int j=2;j<=m;j++){
                    for(int k=1;k<i;k++){
                        arr[i][j]=min(arr[i][j],1+max(arr[k-1][j-1],arr[i-k][j]));
                    }
                }
            }
            printf("%d
    ",arr[n][m]);
        }
        return 0;
    }
    

      

      

  • 相关阅读:
    C#_Assembly-Reflection_程序集与反射
    C#_event_事件
    C#_扩展方法
    C#_Delegate_泛型
    C#_正则表达式
    C#_序列化
    Unity_ClickToShow_FadeInAndOut
    RecordToday
    写作技巧
    高效休息法
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/10051795.html
Copyright © 2011-2022 走看看