HDOJ 1114 Piggy - Bank (완전 가방)

http://acm.hdu.edu.cn/showproblem.php?pid=1114
제목: 빈 깡통 의 무게, 현재 무게, 각 동전 의 무게 와 액면 가 를 알 고 있 으 며, 주어진 저금통 의 무게 에 따라 저금통 안에 적어도 얼마 가 들 어 있 는 지 구 해 야 한다.사고: 적절하게 채 워 진 완전 가방 (최소 치 를 구하 라) --- -----------------------------------------------------------------------------------------------------------------------------------------------초기 화 된 세부 적 인 문제 에서 우리 가 본 가장 좋 은 해 를 구 하 는 가방 문제 중 사실은 두 가지 서로 다른 질문 이 있다.어떤 문 제 는 '마침 가방 을 가득 채 워 라' 는 최 적 화 를 요구 하고, 어떤 문 제 는 반드시 가방 을 가득 채 워 야 한다 고 요구 하지 않 았 다.이 두 가지 질문 법 을 구별 하 는 실현 방법 은 초기 화 할 때 다르다.첫 번 째 질문 법 이 라면 가방 을 꽉 채 워 야 한다. 초기 화 할 때 F [0] 을 제외 하고 다른 F [1:: V] 를 모두 1 로 설정 하면 최종 적 으로 얻 은 F [V] 가 가방 을 꽉 채 우 는 가장 좋 은 방법 임 을 보증 할 수 있다.등 을 가득 채 워 야 한 다 는 요구 가 아니 라 가격 이 최대한 비 싸 기 를 원한 다 면 초기 화 할 때 F [0::: V] 를 모두 0 으로 설정 해 야 한다.왜 그 럴 까요?이렇게 이해 할 수 있 습 니 다. 초기 화 된 F 배열 은 사실상 가방 에 넣 을 수 있 는 아 이 템 이 없 을 때 합 법 적 인 상태 입 니 다.만약 에 가방 을 적당 하 게 채 워 달라 고 요구 하면 이때 용량 이 0 인 가방 만 아무것도 가치 가 0 인 상황 에서 '적당 하 게 채 워 진다' 고 할 수 있다. 다른 용량 의 가방 은 모두 합 법 적 인 해석 이 없고 정의 되 지 않 은 상태 에 속 하 므 로 할당 되 어야 한다.만약 에 가방 이 반드시 가득 채 워 져 야 하 는 것 이 아니라면 모든 용량 의 가방 은 합 법 적 으로 '아무것도 담 지 않 습 니 다' 를 풀 수 있 습 니 다. 이 분해 의 가 치 는 0 이기 때문에 초기 상태의 값 도 모두 0 입 니 다.이 작은 기 교 는 다른 유형의 배낭 문제 까지 충분히 보급 할 수 있다.
#include<stdio.h>

#define maxn 2222222// INT_MAX bag[j-w[i]]+p[i]      

int bag[11111]={0},p[555],w[555];//     0               0     “    ”

int main()
{
    int t,e,f,n,realw,i,j;
    while(scanf("%d",&t)==1)
    {
        while(t--)
        {
            scanf("%d %d",&e,&f);
			realw=f-e;
			scanf("%d",&n);
			for(i=1;i<=n;i++)
				scanf("%d %d",&p[i],&w[i]);
			for(i=1;i<=realw;i++)
				bag[i]=maxn;//            
			for(i=1;i<=n;i++)//          (01  )
			{
				for(j=w[i];j<=realw;j++)
                {
                    if(bag[j]>bag[j-w[i]]+p[i])
                        bag[j]=bag[j-w[i]]+p[i];
                }
            }
			if(bag[realw]==maxn)
				printf("This is impossible.
"); else printf("The minimum amount of money in the piggy-bank is %d.
",bag[realw]); } } return 0; }

좋은 웹페이지 즐겨찾기