top1编程
← 返回题目
题解

【入门】公交乘车

1 条题解

  • 0
    @ 2026-7-29 0:19:15
    #include<bits/stdc++.h>
    using namespace std;
    //公交乘车 完全背包
    int dp[110],w[110],v[110],n;
    int main(){
    	for(int i=1;i<=10;i++){
    		//输入这十个公里的费用
    		cin>>v[i];//把费用输入
    		w[i]=i;//把对应对应的公里数看成重量
    	}
    	cin>>n;
    	memset(dp,50001,sizeof(dp));//先把所有位置初始化成最大值
    	dp[0]=0;
    	for(int i=1;i<=10;i++){//物品的类型
    		for(int j=w[i];j<=n;j++){//从前往后
    			dp[j]=min(dp[j],dp[j-w[i]]+v[i]);
    		}
    	}
    	cout<<dp[n];
    	return 0;
    }
    
    • 1