博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++两水杯量出所需水量的小算法
阅读量:5138 次
发布时间:2019-06-13

本文共 1831 字,大约阅读时间需要 6 分钟。

有2个杯子,分别为5升和9升,在一个水池里有无限的水源,怎么才能在水池里拿到6升水呢

 

#include
using namespace std;void print1(int,int,int);void print2(int,int,int);int main(){ int a, b, need; cout<<"输入两个杯子的容量及需要量出的水量:\n"; cin>>a>>b>>need; print1(a,b,need); print2(a,b,need); system("pause"); return 0;}void print1(int a, int b, int need){ int tmp,min,max,curMin,curMax; cout<<"\n\n逆容差算法:小杯子没水就装满水,大杯子水满了就倒掉,小杯子有水就往大杯子倒。然后判断大杯子水是否满足条件,不满足就继续\n\n"; if(a > b){ tmp = a; a = b; b = tmp; } min = a;//小杯子的容量 max = b;//大杯子的容量 curMin = 0;//当前小杯子里面有多少水 curMax = 0;//当前大杯子里面有多少水 //循环判断大杯子的水是否满足条件 cout<<"当前小杯子有"<
<<"升水,当前大杯子有"<
<<"升水\n"; while(curMax != need){ if(curMin == 0){ cout<<"小杯子没水了,装满水\n"; curMin = min; } else if (curMax == max){ cout<<"大杯子水满了,全倒掉\n"; curMax = 0; } else{ //将小杯子的水倒给大杯子,判断能倒多少水过去 tmp = max - curMax; tmp = tmp > curMin ? curMin : tmp; cout<<"将小杯子的水倒"<
<<"升给大杯子\n"; curMax += tmp; curMin -= tmp; } cout<<"当前小杯子有"<
<<"升水,当前大杯子有"<
<<"升水\n"; } cout<<"当前大杯子的水满足条件,程序退出\n\n";}void print2(int a, int b, int need){ int tmp,min,max,curMin,curMax; cout<<"\n\n顺容差算法:大杯子没水就装满水,小杯子水满了就倒掉,大杯子有水就往小杯子倒。然后判断大杯子水是否满足条件,不满足就继续\n\n"; if(a > b){ tmp = a; a = b; b = tmp; } min = a;//小杯子的容量 max = b;//大杯子的容量 curMin = 0;//当前小杯子里面有多少水 curMax = 0;//当前大杯子里面有多少水 //循环判断大杯子的水是否满足条件 cout<<"当前小杯子有"<
<<"升水,当前大杯子有"<
<<"升水\n"; while(curMax != need){ if(curMax == 0){ cout<<"大杯子没水了,装满水\n"; curMax = max; } else if (curMin== min){ cout<<"小杯子水满了,全倒掉\n"; curMin = 0; } else{ //将大杯子的水倒给小杯子,判断能倒多少水过去 tmp = min- curMin; tmp = tmp > curMax ? curMax : tmp; cout<<"将大杯子的水倒"<
<<"升给小杯子\n"; curMax -= tmp; curMin += tmp; } cout<<"当前小杯子有"<
<<"升水,当前大杯子有"<
<<"升水\n"; } cout<<"当前大杯子的水满足条件,程序退出\n\n";}

  

 

转载于:https://www.cnblogs.com/chenkh/p/5629261.html

你可能感兴趣的文章
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
SQL语法(3)
查看>>
在js在添版本号
查看>>
sublime3
查看>>
Exception Type: IntegrityError 数据完整性错误
查看>>
Nuget:Newtonsoft.Json
查看>>
【luogu4185】 [USACO18JAN]MooTube [并查集]
查看>>
手机号脱敏处理
查看>>
CI控制器调用内部方法并载入相应模板的做法
查看>>
Hdu - 1002 - A + B Problem II
查看>>
HDU - 2609 - How many
查看>>
每天CookBook之Python-003
查看>>
每天CookBook之Python-004
查看>>
Android设置Gmail邮箱
查看>>
StringBuffer的用法
查看>>
js编写时间选择框
查看>>
PHP压缩文件操作
查看>>
Java数据结构和算法(四)--链表
查看>>
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>