2 solutions
-
1
#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; }
- 1
Information
- ID
- 1015
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 7
- Tags
- (None)
- # Submissions
- 21
- Accepted
- 8
- Uploaded By