2 solutions

  • 1
    @ 2024-8-20 11:39:10
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110,M=15;
    int f[N][M]; //f[i][j]表示i层楼一共j个鸡蛋最少需要几次 
    int main()
    {
        int n,m;
        while(cin>>n>>m)
        {
            for(int i=1;i<=n;i++) f[i][1]=i; //一个鸡蛋 
            for(int i=1;i<=m;i++) f[1][i]=1; //一层楼 
            for(int i=2;i<=n;i++)
            {
                for(int j=2;j<=m;j++)
                {
                    f[i][j]=f[i][j-1]; //不用第j个鸡蛋
                    for(int k=1;k<=i;k++)
                    {
                        f[i][j]=min(f[i][j],max(f[k-1][j-1],f[i-k][j])+1);
                        //                      j个鸡蛋碎了   j个鸡蛋没有碎
                    }
                }
            }
            cout<<f[n][m]<<endl;
        }
        return 0;
    }
    
    
    
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110,M=15;
    int f[N][M]; //f[i][j]表示用了j个鸡蛋测i次的最大区间
    int main()
    {
        int n,m;
        while(cin>>n>>m)
        {
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                {
                    f[i][j]=f[i-1][j]+f[i-1][j-1]+1;
                    //       没有碎    碎了
                }
                if(f[i][m]>=n)
                {
                    cout<<i<<endl;
                    break;
                }
            }
        }
        return 0;
    }
    
    • 0
      @ 2025-1-20 11:40:39

      :(

      • 1

      Information

      ID
      1015
      Time
      1000ms
      Memory
      128MiB
      Difficulty
      7
      Tags
      (None)
      # Submissions
      21
      Accepted
      8
      Uploaded By