완전 배낭 도로 승차 문제

1337 단어 problem

Description


 
특별한 일방통행로는 킬로미터마다 정류장이 있다.고객은 그들이 차를 탄 킬로미터에 따라 비용을 지불한다.예를 들어 다음 표는 비용의 명세서이다.10킬로미터를 넘는 차는 한 대도 없고 한 고객은 n킬로미터(1<=n<=100)를 주행할 계획이다. 무한정 차를 갈아타면 여정을 마칠 수 있다.마지막으로 비용이 가장 적게 요구된다.
 

Input


 
첫 번째 줄의 10개의 정수는 각각 1~10킬로미터를 걷는 비용을 나타낸다(<=500).10킬로미터를 주행하는 것이 1킬로미터를 주행하는 것보다 비용이 적을 수 있으니 주의해라.       
두 번째 줄의 정수 n은 여행객의 총 노정수를 나타낸다.
 

Output


 
최소한의 비용을 표시하는 정수만 있다.
 

Samples


 
input:
12 21 31 40 49 58 69 79 90 101
15
output:
147
 
다음은 제 코드입니다(처음 배낭을 배웠는데 오류가 있으면 지적해 주셔서 대단히 감사합니다).
#include
#include 
#include
using namespace std;
int main(){
	int n;
	int cost[11]; 
	int dp[500];
	memset(dp,999999,sizeof(dp));  //   dp       
	dp[0] = 0;  //   0      0; 
	for(int i = 1; i <= 10; i++){
		cin>>cost[i];  //          
	}
	cin>>n;  //      
	for(int i = 1; i <= 10; i++){  //    i    
		for(int j = i; j <= 100; j++){
			dp[j] = min(dp[j], dp[j - i] + cost[i]);  //       j      ,   ,
		}                                             //    dp[j] ;  ,          
	}                                                 //    i     ,             
	cout<

좋은 웹페이지 즐겨찾기