用R写一个找钱的全排列并进行找钱
时间: 2024-05-05 17:19:33 浏览: 102
的最小方式的函数。
以下是使用 R 编程语言编写的找钱的全排列及最小方式的函数的示例代码:
```R
# 定义找钱的全排列和最小方式的函数
makeChange <- function(coins, amount) {
# 计算硬币总数
nCoins <- length(coins)
# 初始化需要找回的钱数为 0
change <- 0
# 初始化最小硬币数量为正无穷
minCoins <- Inf
# 循环计算所有硬币排列情况
for (i in 1:(nCoins^amount)) {
# 初始化当前硬币数量为 0
currentCoins <- rep(0, nCoins)
# 将当前硬币数量转换为整数
quotient <- i - 1
# 计算当前硬币数量
for (j in amount:1) {
currentCoins[j] <- quotient %% nCoins
quotient <- quotient %/% nCoins
}
# 计算当前排列的总价值和硬币数量
currentChange <- sum(currentCoins * coins)
currentCoinCount <- sum(currentCoins)
# 判断是否为最小硬币数量
if (currentChange == amount && currentCoinCount < minCoins) {
minCoins <- currentCoinCount
change <- currentCoins
}
}
# 返回找钱的最小方式
return(change)
}
# 测试函数
coins <- c(1, 5, 10, 25)
amount <- 63
makeChange(coins, amount)
```
这个函数可以计算出硬币数量最少的排列方式,并返回一个长度为硬币种类数的向量,表示每种硬币需要的数量。在这个例子中,答案应该是 c(3, 1, 1, 2),表示需要 3 个 1 美分硬币、1 个 5 美分硬币、1 个 10 美分硬币和 2 个 25 美分硬币才能找回 63 美分。
阅读全文