8个人买包子问题
来源:互联网 发布:php socket 客服系统 编辑:程序博客网 时间:2024/04/27 23:22
问题描述:8个人去买包子,每人买一个,其中四个人手上有5元,4个人手上有10元。一个包子5元,而老板手里没有零钱,问:如何排队才不会使老板找不开零钱?
考虑到 只有两个数值,可以用1代表手里有10元的人,0代表手里有5元的人。这样买包子的顺序就组成了一个二进制数;
设为a,则由题意可得,0x0f<=a<=0xf0;
使用for循环去验证每个a是否符合约束条件,符合即输出;
#include<stdio.h>//0代表5.1代表10int number1(int a);//计算一个数二进制数1的个数。void print(int a);//将正数按位输出。8位int total(int a);//计算总数void main(){int a, i, b, j;for (a = 0x0f; a <= 0xf0; a++){b = total(a);if(number1(a) == 4){if (b >= 0){print(a);printf("\n");}}}}//计算一个数二进制数1的个数。int number1(int a){int i, number = 0;for (i = 0; i<8; i++){a = a >> i;if (a & 0x01 == 0x01)number++;a = a << i;}return number;}//将正数按位输出。8位void print(int a){int i;for (i = 0; i<8; i++){a = a >> i;if (a & 0x01 == 0x01)//这以为是1{printf("%d ", 10);}else{printf("%d ", 5);}a = a << i;}}int total(int a){int total1 = 0;int i;for (i = 0; i < 8; i++){if (total1 >= 0){a = a >> i;if (a & 0x01 == 0x01)//该位是1{total1 -= 5;}else{ total1 += 5; }a = a << i;}elsereturn -1;}return total1;}
在编程过程中遇到很多问题:
例如,在使用total函数和number1函数以及print函数时,这几个函数在单纯的实现功能上没有任何问题,但是在这个过程中,会改变a的值。
所以在没有total函数的前提下,将total函数内容加入到main函数然后再使用print函数打印的过程中,会出现错误,因为这个输出的a在
a=a>>i;a=a<<j;
过程中a的值改变了,所以会导致出错。
目前暂时还没学习高级算法,可能学了以后就有有更简单的方法。
同时也体会到编程中程序模块化的方便之处。方便修改,
一下是运行结果,也不晓得全不全,如果有错误,敬请指正。
5 10 5 10 5 10 5 105 5 10 10 5 10 5 105 10 5 5 10 10 5 105 5 10 5 10 10 5 105 5 5 10 10 10 5 105 10 5 10 5 5 10 105 5 10 10 5 5 10 105 10 5 5 10 5 10 105 5 10 5 10 5 10 105 5 5 10 10 5 10 105 10 5 5 5 10 10 105 5 10 5 5 10 10 105 5 5 10 5 10 10 105 5 5 5 10 10 10 10请按任意键继续. . .
0 0
- 8个人买包子问题
- 程序员买包子
- GOJ1123买包子
- 包子
- 一块钱买不到包子,却可以体验大数据
- 智力爆开---包子排放问题
- 27个人去买矿泉水
- Windows 8买还是不买?三个问题帮助企业抉择
- 再议买鸡问题。
- 买书问题
- 1.4 买书问题
- 买啤酒问题
- 买书问题
- 买鸡的问题
- 【C++】买苹果问题
- 买苹果问题
- 买饭问题
- 【CVTE】买虾问题
- Android7.0 多窗口你值得拥有
- 远程脚本概述
- python socket编程详细介绍
- jQuery 核心 - jQuery() 方法
- Mirantis OpenStack 6.0 base on CentOS 6.5 Install Doc
- 8个人买包子问题
- 大数据五大职位
- Xcode8 编译ipa、applicaiton loader提交成功 但是、iTunes connect构建版本不显示
- 单片机红外遥控解码程序设计
- 【转载】「微信小程序」有哪些冲击与机会?
- Ubuntu下配置ssh服务
- iOS View生成清晰的图片
- 什么是JS事件冒泡?
- 选择器