rqnoj 169

xiaoxiao2021-02-28  76

题目描述 假设某条街上每一公里就有一个公共汽车站,并且乘车费用如下表: 公里数 1 2 3 4 5 6 7 8 9 10 费用 12 21 31 40 49 58 69 79 90 101 而任意一辆汽车从不行驶超过10公里。某人想行驶n公里,假设他可以任意次换车,请你帮他找到一种乘车方案,使得总费用最小 注意:10公里的费用比1公里小的情况是允许的。 输入格式 共两行,第一行为10个不超过200的整数,依次表示行驶1~10公里的费用,相邻两数间用一个空格隔开;第二行为某人想要行驶的公里数(<=100)。 输出格式 仅一行,包含一个整数,表示行使这么远所需要的最小费用。

大水题不解释:

#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cstdio> #include <vector> using namespace std; typedef unsigned long long ull; typedef long long ll; int main() { int t,n,name; int dp[101],cost[101]; for(int i=1;i<=10;i++) { scanf("%d",&cost[i]); } scanf("%d",&n); memset(dp,-1,sizeof(dp)); dp[0]=0; for(int i=1;i<=n;i++) { for(int j=1;j<=10;j++) { if(dp[i]==-1||(dp[i]>dp[i-j]+cost[j]&&dp[i-j]!=-1&&i>=j)) { dp[i]=dp[i-j]+cost[j]; } } } printf("%d\n",dp[n]); }
转载请注明原文地址: https://www.6miu.com/read-53102.html

最新回复(0)