Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
65102 | zlw2025 | 【例85.3】 过河问题 | C++ | 无测评数据 | 0 MS | 0 KB | 551 | 2025-05-09 15:03:24 |
//过河 #include <stdlib.h> #include <stdio.h> #include <algorithm> #include <iostream> #include <string.h> #include <math.h> #define min(a,b) a<b?a:b; using namespace std; int a[1010]; int dp[1010]; int main() { int n,i; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); //dp[i]:代表一共有i个人的话,需要花费的最少时间 dp[1]=a[1]; dp[2]=a[2]; dp[3]=a[1]+a[2]+a[3]; for(i=4;i<=n;i++) { dp[i]=min(dp[i-1]+a[1]+a[i],dp[i-2]+a[1]+a[i]+2*a[2]); } cout<<dp[n]<<endl; return 0; }