AI 启蒙-无人售货机智能找零算法
人的理想志向往往和他的能力成正比。
--约翰逊--

AI 启蒙-无人售货机智能找零算法
【问题区】
你现在是一家无人售货机生产公司的高级程序员,技术经理叫你实现无人售货机智能找零钱的算法,具体需求如下:
当购物者购物后,插入一张满足支付的人民币,售货机可以自动计算出找零的方案,并控制找零模块出钞,现在需要你实现找零算法找出所有的找零方案,供出钞模块选择~
假设某一时刻零钱有 50元一张,20元2张,10元2张,5元1张,1元8张,某用户随机购买商品(商品价格在1-99元之间)后,他投入一张面值大于所购商品价格的人民币(可选:5元, 10元, 20元, 50元, 100元),请列出所有找零方案!
【提示区】
此问题主要是要找出待找零的人民币任意相加刚好等于要找的零钱的所有组合,如,顾客购买的商品是3块,投入10块,那么可选的找零方案有:
1张5元 + 2张 1元
7张1元
【C代码实现区】
#include <stdio.h>
/***********************************
*输出当前找零方案对应的所有零钱的币值
************************************/
void print_solution(int changes[], int size, int solution){
int bit = 1;
int i = 0;
printf("已经为您找到一种解决方案:\n");
for(i=0; i<size; i++){
if((bit& solution)==bit){
printf(" %d ", changes[i]);
}
bit <<=1;
}
printf("\n");
}
int main(void){
//定义可用于找零的零钱池
int changes[]={1,2,2,5,10,20,50};
int total = 1;
int need = 0;
int num =sizeof(changes)/sizeof(int);
printf("请输入您要找的零钱数目:\n");
scanf("%d", &need);
//计算候选方案的数量
for(int i=0; i<num; i++){
total*=2;
}
//遍历所有的解决方案
for(int j=0; j<total; j++){
int res = 0;
int bit = 1;
for(int k=0; k<num; k++){
if((bit&j) == bit){
res+=changes[k];
}
bit<<=1;//0x01 => 0x10
}
if(res == need){
print_solution(changes, num, j);
}
}
return 0;
}
【视频讲解区】
视频链接:https://v.qq.com/x/page/r08186cmodc.html
AI 启蒙-无人售货机智能找零算法的更多相关文章
- [LeetCode] Coin Change 硬币找零
You are given coins of different denominations and a total amount of money amount. Write a function ...
- NYOJ995硬币找零(简单dp)
/* 题意:给你不同面额的硬币(每种硬币无限多),需要找零的面值是T,用这些硬币进行找零, 如果T恰好能被找零,输出最少需要的硬币的数目!否则请输出剩下钱数最少的找零方案中的最少硬币数! 思路:转换成 ...
- HDU3591找零,背包
题目大概的意思就是:小强用硬币买东西,硬币有N种,面值为Vi,店家有各种硬币都有无限个,而小强只有Ci个(分别对应Vi) 问最小交易硬币数,就是一个有找零的背包问题啦. 我的上一篇博客跟这hdu359 ...
- 【ACM小白成长撸】--贪婪法解硬币找零问题
question:假设有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱.按照贪婪法的思想,需要不断地使用面值最大的硬币.如果找零的值小于最大的硬币值,则尝试第二 ...
- P3092 [USACO13NOV]没有找零No Change
题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 ...
- [USACO13NOV]没有找零No Change [TPLY]
[USACO13NOV]没有找零No Change 题目链接 https://www.luogu.org/problemnew/show/3092 做题背景 FJ不是一个合格的消费者,不知法懂法用法, ...
- [LeetCode] Lemonade Change 买柠檬找零
At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and ...
- [Swift]LeetCode860. 柠檬水找零 | Lemonade Change
At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and ...
- Leetcode 860. 柠檬水找零
860. 柠檬水找零 显示英文描述 我的提交返回竞赛 用户通过次数187 用户尝试次数211 通过次数195 提交次数437 题目难度Easy 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾 ...
随机推荐
- ubuntu安装pycharm并设置快捷方式
一.tar.gz包安装 从官网下载压缩包 tar zxfv pycharm-professional-2017.3.3.tar.gz cd pycharm-2017.3.3 ./bin/pycharm ...
- centos6.5添加阿里docker加速器
1. 配置阿里docker加速器 vi /etc/sysconfig/docker 在文件末尾追加下面两行 other_args="--registry-mirror=https://pl8 ...
- 记录一下mac上码云的使用
项目比较多的时候用第三方的托管平台管理自己的代码还是挺不错的,记录一下码云的基本使用 分两部分进行说明: 一 :怎么上传自己本地的代码到码云.(方式,通过终端输入命令行) 具体的步骤: 1 :首先得在 ...
- 适合自己的adblock过滤列表
轻微完美主义,极简主义 已屏蔽广告: 1.CSDN的广告 2.百度侧栏热点搜索 3. 知乎广告 4.stackoverflow的推送广告 5.LeetCode的推送的是否见过这个题 bbs.csdn. ...
- smtp发送html报告与日志附件图片png
1.非ssl发送: 授权码机制,开启smtp,获取授权码以qq邮箱为例: 附件展示: #!/usr/bin/python3 import os import smtplib from email.mi ...
- 学记笔记 $\times$ 巩固 · 期望泛做$Junior$
最近泛做了期望的相关题目,大概\(Luogu\)上提供的比较简单的题都做了吧\(233\) 好吧其实是好几天之前做的了,不过因为太颓废一直没有整理-- \(Task1\) 期望的定义 在概率论和统计学 ...
- vue实现两重列表集合,点击显示,点击隐藏的折叠效果,(默认显示集合最新一条数据,点击展开,显示集合所有数据)
效果图: 默认显示最新一条数据: 点击显示所有数据: 代码: 说明:这里主要是 这块用来控制显示或者隐藏 根据当前点击的 这个方法里传递的index 对应 isShow 数组里的index ,对 ...
- Hadoop源码学习笔记之NameNode启动场景流程一:源码环境搭建和项目模块及NameNode结构简单介绍
最近在跟着一个大佬学习Hadoop底层源码及架构等知识点,觉得有必要记录下来这个学习过程.想到了这个废弃已久的blog账号,决定重新开始更新. 主要分以下几步来进行源码学习: 一.搭建源码阅读环境二. ...
- NRF52832初步使用
开发环境搭建 开发环境涉及到协议栈SDK版本.keil PACK版本的匹配问题,目前测试通过的环境如下: windows系统:win10 硬件:NRF52832测试板.JLINK-V8仿真器 Keil ...
- 链接SQLServer数据库 导出csv文件
依赖::::<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>ms ...