编辑代码

#include <stdio.h>

void findChange(int denominations[], int numDenominations, int amount) {
    printf("找零 %d 元需要的面额:\n", amount);

    // 从大到小排序面额
    for (int i = numDenominations - 1; i >= 0; i--) {
        while (amount >= denominations[i]) {
            // 尽量使用当前面额
            printf("%d元 ", denominations[i]);
            amount -= denominations[i];
        }
    }

    if (amount == 0) {
        printf("\n找零成功!\n");
    } else {
        printf("\n找零失败,无法找到合适的面额。\n");
    }
}

int main() {
    // 可用的面额
    int denominations[] = {5, 200, 10};
    int numDenominations = sizeof(denominations) / sizeof(denominations[0]);

    // 需要找零的金额
    int amount = 8;

    // 执行找零算法
    findChange(denominations, numDenominations, amount);

    return 0;
}