硬币兑换

来源:互联网 发布:淘宝客高佣金90 被骗 编辑:程序博客网 时间:2024/04/26 09:24
#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.}
0 0
原创粉丝点击