C算法编程题(七)购物
前言
上一篇《C算法编程题(六)串的处理》
有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家提的一些建议和意见,我当时写这个系列的目的不是探讨算法和C++的特性,可能是我标题写的不好吧,让大家误解了,再这里给大家说声抱歉。
大家都学过数学,做过奥数题,其实大家看看我写的前几篇文章就会发现,做这类编程题就像做奥数题一样,锻炼的是我们的逻辑思维能力,我当时写的目的也是这样。如果说用一些语言的特性去实现,那我就不用C++了,直接用C#更好的实现,用到C++只是一些简单的不能再简单的语法而已。
做编程题和做奥数题一样,只不过一个用数学的方式、一个用编程的方式;一个写在纸上、一个运行在电脑上;只要是思路通了,不管用什么方式都可以解决问题,只不过工具不同而已。
国外一些早期的牛叉编程高手都是数学家出身,所以说学好编程先学好数学。
程序描述
公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。
程序输入:
第一行是一个整数m,代表可购买的商品的种类数。
接下来是m个整数,每个1行,分别代表这m种商品的单价。
程序输出:
第一行是一个整数,表示共有多少种方案
第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
例如:
输入:
2
200
300
则应输出:
2
2 2
5 0
输入:
2
500
800
则应输出:
1
2 0
程序实现
刚看到这个题,有点像找配对的感觉,其实做这种题就是思维能力的问题了,有的人一个小时就可以做出来,有的人哪怕做一天也做不出来。
这里我说一种最常用的思路,我们输入商品个数是2,单价分别为200和300,那我们先这样想,1000块最大可以200的商品是5个,最大可以买300的商品2个,只是考虑在1000块以内,买一种剩余的钱我们不考虑,所以我们可以分别找在买5个以内200的商品,看可以买300块商品有几个,就是买5个、4个、3个、2个、1个、0个200的商品,剩余的钱可以买多少个300的商品。如果加起来正好是1000块,那就是一种购买的情况。
思路就是这样,代码用到了一点递归的思想,我就不多说,大家自己理解下。
完整代码:
1 #include"stdio.h" 2 int a[1000];//存放商品价格 3 int counter=0; 4 int c[1000]; 5 int num;//商品数目 6 void f(int b[],int i) 7 { 8 int j,sum=0; 9 if(i>=num) 10 { 11 return ; 12 } 13 else 14 { 15 c[i]=1000/a[i]; 16 for(b[i]=0;b[i]<=c[i];b[i]++) 17 { 18 sum=0; 19 if(i==num-1) 20 { 21 for(j=0;j<num;j++) 22 { 23 sum+=b[j]*a[j]; 24 } 25 if(sum==1000) 26 { 27 for(j=0;j<num;j++) 28 { 29 printf("%d ",b[j]); 30 } 31 printf("\n"); 32 counter++; 33 } 34 } 35 else 36 { 37 f(b,i+1); 38 } 39 } 40 return ; 41 } 42 } 43 void main() 44 { 45 int b[1000]={0}; 46 int c[1000]; 47 48 int i,j,m=0,sum; 49 printf("商品数目:\n"); 50 scanf("%d",&num); 51 printf("商品价格:\n"); 52 while(m<num) 53 { 54 scanf("%d",&a[m]); 55 m++; 56 } 57 i=0; 58 c[i]=1000/a[i]; 59 for(b[i]=0;b[i]<=c[i];b[i]++) 60 { 61 f(b,i+1); 62 } 63 printf("%d\n",counter); 64 getchar(); 65 }
运行结果:
本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/3421554.html,如需转载请自行联系原作者
C算法编程题(七)购物相关推荐
- C算法编程题(四)上三角
前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个"上三角",有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微 ...
- 【面试锦囊】14种模式搞定面试算法编程题(1-7)
面试锦囊之知识整理系列 面试锦囊系列一直有收到大家的反馈,包括后台内推成功的消息.朋友的同事从创业小公司成功跳到huawei等等,非常高兴小破号的这些整理分享能够真正地帮助到大家,以后也会继续.为了更 ...
- 【面试锦囊】14种模式搞定面试算法编程题(8-14)
面试锦囊之知识整理系列 面试锦囊系列一直有收到大家的反馈,包括后台内推成功的消息.朋友的同事从创业小公司成功跳到huawei等等,非常高兴小破号的这些整理分享能够真正地帮助到大家,以后也会继续.为了更 ...
- C算法编程题(二)正螺旋
前言 上一篇<C算法编程题(一)扑克牌发牌> 写东西前总是喜欢吐槽一些东西,还是多啰嗦几句吧,早上看了一篇博文<谈谈外企涨工资那些事>,里面楼主讲到外企公司包含的五类人,其实不 ...
- system verilog编程题_拼多多2020校招部分算法编程题合集
拼多多2020校招部分算法编程题2道,多多的魔术盒子和多多的排列函数 其实根据他的匹配职位我们可以看到,这5道题的难度还是并不高,只是作为一个初步筛选,我这边选择了前两道跟大家分享 [编程题一] 多多 ...
- 14种模式解决面试算法编程题(PART I)
万万没想到,暑假还没开始,有些公司的秋招提前批已经来了-很慌-数据结构和算法题可以说是秋招笔试面试必考的内容,如果你还不够熟练(just like me),那就要从现在开始疯狂刷题了啊朋友们. 附上我 ...
- 50道JAVA基础算法编程题【内含分析、程序答案】【建议收藏】【建议收藏】【建议收藏】
非常基础的题目,但是想学好Java它真的是基础,基础有多重要我就不再废话,重要的事情说三遍[建议收藏][建议收藏][建议收藏]. [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一 ...
- 算法编程题的心得体会
如果是在线笔试,一定要注意问题的规模, 这牵涉到算法时间复杂度的要求 也涉及相关数据结构的设计 比如,一道关于郊游的题目,学生的规模最大才到 10 人: 再考察学生之间的关系时,显然可以使用二维数组b ...
- 14种模式解决面试算法编程题(PART II)
继续 8.树的宽度优先搜索(Tree BFS) 该模式基于广度优先搜索(BFS)技术来遍历树,并使用队列在跳到下一层之前记录下该层的所有节点.使用这种方法可以有效地解决涉及以逐级顺序遍历树的任何问题. ...
最新文章
- rust房子 如何拆除_小产权房“依法拆除”?中央新文件透露“1个新信号”
- VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)
- NAB 2019见闻:CAE视频编码与QoE
- StevenBoyd--Convex optimization--0. Contents-catalog
- LeetCode: Merge k Sorted Lists
- 【maven】maven入门以及maven常用命令
- DevExpress XtraGrid RepositoryItemCheckEdit 复选框多选的解决方法(转)
- vue+node全栈移动商城【4】-创建get、send接口,接收数据更新视图
- 查找和杀掉postgresql堵塞的会话
- Oracle查看表空间使用情况
- 3.6 矩阵秩的其它重要关系
- vue项目实现权限控制的几种思路
- operator does not exist: timestamp with time zone >= character varying / pandas 链接 psycopg2保存数据问题
- 达内java月考试题_达内java1512第二次月考(附答案)doc.doc
- 做微信小程序需要ICP证书吗
- 这156套PS笔刷合集!两天时间给大家盘来了!
- MATLAB画三维动态魔方/旋转魔方/旋转立方体
- 2021-2022学年广州市广大附中九年级第二学期开学考试英语试题
- python--定义新矩阵、矩阵赋值、改变类型
- NGUI制作字体的三种方法
热门文章
- antlr 可以用java写吗_java – 我们可以用ANTLR定义一个非上下文语法吗?
- gpu tensorflow 怎么看是否安装成功_安装keras模块以及使用GPU加速
- git指令如何葱master转到dev_看完这篇还不会用Git,那我就哭了
- 利用计算机绘制地质图的思路和方法,基于平面地质图的三维地质建模方法研究...
- 服务器复制文件进程,服务器复制文件进程
- tcp中的crc检验算法原理_CRC校验原理及其实现
- 修改oracle 安裝參數,oracle 安裝相關參數設定
- Ibator生成iBATIS配置文件 DO及DAO操作记录
- 通过反射创建新类示例的两种方式及比较
- Apache Avro 与 Thrift 比较