复习Logic Decision(C++) ---以百钱买鸡为例

Question:市场上 公鸡标价:7元/只;母鸡标价:5元/只;雏鸡:1元/3只。现在给你100元,要求买100只鸡,并且要求公鸡、母鸡、雏鸡都必须有,则公鸡、母鸡、雏鸡应该各买几只?

Analysis

① 公鸡、母鸡、雏鸡三者数量相加为100
cock + hen + chick - 100 == 0
② 买公鸡开销、买母鸡开销、买雏鸡开销相加为100
cock * 7 + hen * 5 + chick / 3 - 100 == 0   
③ 雏鸡数量为3的倍数
chick % 3 == 0
④ 若全用来买公鸡且三种鸡都要有
100 - 1 - 5 = 94
94 / 7 = 13
最多可买13只公鸡
④ 若全用来买母鸡且三种鸡都要有
100 - 1 - 7 = 92
92 / 5 = 18
最多可买18只母鸡
④ 若全用来买雏鸡且三种鸡都要有
100 - 7 - 5 = 88
88 * 3 = 264
又 ∵ chick < 100 - 1 - 1
最多可买98只雏鸡 
最少要买3只雏鸡                

注意点:只要条件不等于0,即为真。因此,条件“x != 0”与条件“x”等价

初始版本

# include<iostream>
using namespace std;
int main(){
	for(int cock = 1; cock <= 13; ++cock)
		for(int hen = 1; hen <= 18; ++hen)
			for(int chick = 3; chick <= 98; +chick){
				if(cock * 7 + hen * 5 + chick / 3 - 100) continue;
				if(cock + hen + chick - 100) continue;
				if(chick % 3) continue;
					cout<<"公鸡:"<<cock<<", 母鸡:"<<hen<<", 雏鸡:"<<100-cock-hen<<endl;
			}
}

优化版本

# include<iostream>
using namespace std;
int main(){
	for(int cock = 1; cock <= 13; ++cock)
		for(int hen = 1; hen <= 18; ++hen)
			if(cock * 7 + hen * 5 + (100 - cock - hen) / 3 - 100) continue;
			if((100 - cock - hen) % 3) continue;
					cout<<"公鸡:"<<cock<<", 母鸡:"<<hen<<", 雏鸡:"<<100-cock-hen<<endl;
			}
}

注意点:还可以把(100 - cock - hen) % 3 == 0 && cock * 7 + hen * 5 + (100 - cock - hen) / 3 - 100 == 0放入if条件的括号中,仅用双重循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值