这题n的范围到底是多少?谁能告诉我?
定义dp_i为行驶i公里需要的最少金额,用c_i表示输入的乘车i公里的费用,则dp_i=min(dp_i,dp_i-1+c_1&,dp_i-2+c_2,......,dp_i-10+c_10$)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int k,c[10],dp[10001];
int main(){
memset(dp,0x3f,sizeof dp);
dp[0]=0;
for(int i=0;i<10;i++) scanf("%d",&c[i]);
scanf("%d",&k);
for(int i=1;i<=k;i++){
for(int j=1;j<=10;j++){
if(i>=j) dp[i]=min(dp[i],dp[i-j]+c[j-1]);
}
}
printf("%d",dp[k]);
return 0;
}
谢谢支持我写题解!
那一行乱码应该是
dp_i=min(dp_i,dp_i-1+c_1,dp_i-2+c_2,......,dp_i-10+c_10)
另外,还要补充一下,应该将dp数组除了dp_0都赋值为inf
实在对不起
比赛已结束。