#include <stdio.h>
#include <string.h>
int Answer;
int main(void)
{
int T, test_case;
int types,coin[11],changes;
int i,j;
int m[64002];
// freopen("input.txt", "r", stdin);
setbuf(stdout, NULL);
scanf("%d", &T);
for(test_case = 0; test_case < T; test_case++)
{
Answer = 0;
memset(m, 0, sizeof(m));
scanf("%d", &types);
for(i = 1; i <= types; i++)
{
scanf("%d", &coin[i]);
}
scanf("%d", &changes);
for(i = 1; i <= types; i++)
{
m[coin[i]] = 1;
}
for(i = 1; i <= changes; i++)
{
for(j = 1; j <= types; j++)
{
if( i > coin[j] && m[i] == 0 && m[i- coin[j]] > 0)
m[i] = m[i- coin[j]] + 1;
else
{
if (i > coin[j] && m[i- coin[j]] > 0 && m[i] > 0)
{
m[i] = (m[i- coin[j]] + 1) < m[i] ? (m[i- coin[j]] + 1):m[i];
}
}
}
}
Answer = m[changes];
printf("Case #%d\n", test_case+1);
if(Answer != 0)
printf("%d\n", Answer);
else
printf("impossible\n");
}
return 0;//Your program should return 0 on normal termination.
}
硬币兑换
最新推荐文章于 2023-01-11 15:18:26 发布