开始 2023-01-12 15:45:00

20230112D班兔年赛

结束 2023-01-28 17:30:00
Contest is over.
当前 2024-11-28 11:41:25

《最小乘车费用》题解

这题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;
}

谢谢支持我写题解!


201902tjc  •  1年前

那一行乱码应该是

dp_i=min(dp_i,dp_i-1+c_1,dp_i-2+c_2,......,dp_i-10+c_10)

另外,还要补充一下,应该将dp数组除了dp_0都赋值为inf

实在对不起


201902tjc  •  1年前

比赛已结束。