描述
一个特别的单行街道在每公里处有一个汽车站。顾客根据他们乘坐汽车的公里使来付费。例如样例的第一行就是一个费用的单子。
没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1<=n<=100),它可以通过无限次的换车来完成旅程。最后要求费用最少。
【题目分析】
动态规划小水题。dp[j+k]=dp[j]+w[k],同样需要注意循环的边界。
【代码】
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int dp[501],cost[11];
int main()
{
for (int i=1;i<=10;++i) cin>>cost[i];
int n;cin>>n;
memset(dp,0x3f,sizeof dp);
dp[0]=0;
for (int i=1;i<=n;++i)
for (int j=0;j<=n;++j)
for (int k=1;k<=10;++k)
dp[j+k]=min(dp[j+k],dp[j]+cost[k]);
cout<<dp[n]<<endl;
}