Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
149166 | 唐钧 | 切割铜棒 | C++ | 通过 | 100 | 4 MS | 4948 KB | 581 | 2024-05-25 16:59:28 |
#include <bits/stdc++.h> using namespace std; int n,l,cut[1097],dp[1097][1097]; int main() { while(1) { cin>>l>>n; if(l==0)return 0; for(int i=1;i<=n;i++) { cin>>cut[i]; } cut[0]=0; cut[n+1]=l; memset(dp,127/2,sizeof dp); for(int i=0;i<=n;i++) { dp[i][i+1]=0; } for(int i=2;i<=n+1;i++) { for(int s=0;s+i<=n+1;s++) { for(int k=s+1;k<s+i;k++) { dp[s][s+i]=min(dp[s][s+i],dp[s][k]+dp[k][s+i]+cut[s+i]-cut[s]); } } } cout<<"The minimum cutting is "<<dp[0][n+1]<<'.'<<endl; } return 0; }