티스토리 뷰
동전교환
동전을 입력 받아 가장 적은 수의 동전으로 교환 해 주려면 어떻게 주면 되는가?
입력예시
15 //거스름돈
4 //동전 갯수
1 //동전
5
12
50
출력예시
3
5 5 5
소스
#include<stdio.h>
int cost,n,coin[10];
int change[20],chase[20];
void input()
{
FILE *fp=fopen("input.txt","r");
int i;
fscanf(fp,"%d", &cost);
fscanf(fp,"%d", &n);
for(i=1;i<=n;i++)
fscanf(fp,"%d", &coin[i]);
fclose(fp);
}
void process()
{
int i,j,min,k,f=cost;
for(i=1;i<=cost;i++)
{
min=10000;
for(j=1;j<=n;j++)
{
if(i-coin[j] >= 0 && min > change[i-coin[j]]+1)
{
min=change[i-coin[j]]+1;
chase[i]=coin[j];
}
}
change[i]=min;
}
printf("%d\n", change[cost]);
while(1)
{
if(f==0) break;
k=chase[cost];
printf("%d ", k);
f-=k;
}
printf("\n");
}
void main()
{
input();
process();
}
'프로그래밍 > 알고리즘' 카테고리의 다른 글
최대공통부분 수열 (0) | 2011.02.25 |
---|---|
MAX-SCORE (2009_1) (0) | 2011.02.25 |
UVA 231 캐쳐 미사일 검사 (0) | 2011.02.25 |
웜 바이러스 (0) | 2011.02.25 |
음악 프로그램 (0) | 2011.02.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday