Advertisement

货币兑换问题

阅读量:
复制代码
    #include <stdio.h>
    #include <stdlib.h>
    
    
    
    int main()
    {
    int m, i, n, j;
    printf("面值个数:");
    scanf("%d", &m);
    int FaceValue[m+1];
    FaceValue[0] = 0;
    printf("面值:\n");
    for(i = 1; i < m+1; i++){
        scanf("%d", &n);
        FaceValue[i] = n;
    }
     printf("输入要兑换的钱的面值:");
     scanf("%d", &n);
     int table[n+1][m+1];
     //初始化
     for(i = 0; i <= n; i++){
        table[i][0] = 0;
     }
     for(j = 0; j <= m; j++){
        table[0][j] = 0;
     }
    
     //填表
     for(i = 1; i <= n; i++){   //总钱数
        for(j = 1; j <= m; j++){  //面值的数目
            if(FaceValue[j] == i)
                table[i][j] = 1;
            else if(FaceValue[j] < i)
                table[i][j] = table[i - FaceValue[j]][j] + 1;
            else
                table[i][j] = table[i][j - 1];
    
        }
     }
     for(i = 0; i <= n; i++){
            printf("%d\t", i);
        for(j = 0; j <= m; j++){
            printf("%d\t", table[i][j]);
        }
        printf("\n");
     }
    
    
     printf("兑换的最小面值的个数是:%d", table[n][m]);
    return 0;
    }

运行结果:

全部评论 (0)

还没有任何评论哟~