喝汽水问题——C语言-创新互联

目录

成都创新互联公司是一家专业的成都网站建设公司,我们专注网站设计制作、网站建设、网络营销、企业网站建设,卖友情链接一元广告为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。

题目:

方法思维:

解法一:循环

解法二:递归

终极无敌解法:

总结


题目:

  汽水一元钱一瓶,两个空瓶可以换一瓶汽水,如果你有20元,你可以喝多少瓶汽水?

方法思维:

  看似是钱与空瓶的故事,实际上是空瓶一个人的事情;20元在这个题目中就等于40个空瓶,所以这道题是 “拥有的空瓶的数目” 和 “2” 之间的故事,不停地除以2即可。

解法一:循环
#includeint main ()
{
	int money=0;//钱 
	scanf("%d",&money);
	
	int cap=money*2;//目前拥有的空瓶数 
	int sum=0;//喝的汽水数 
	
	while(cap>=2)//只要有两个以上的空瓶,就可以一直换。 
	{
		sum+=cap/2;
		cap=cap/2+cap%2;
	}
	printf("%d",sum);
}
解法二:递归
#includeh(int n)
{
	int sum=n/2;//汽水数
	int cap=n%2;//空瓶数
	if(sum+cap==1)
	{
		return 1;
	}
	else
	{
		return sum+h(sum+cap);
	}
}
int main ()
{
	int money=0;//钱
	scanf("%d",&money);
	int n=money*2;
	
	int ret=h(n);
	printf("%d",ret);
}
终极无敌解法:

假设你只有一元钱,那么你可以换到一瓶水和一个空瓶。

又因为,一个空瓶可以换0.5瓶水和0.5个空瓶。

所以,将这一元钱换来的空瓶兑换为0.5瓶水和0.5个空瓶,水被你喝下去了,而空瓶又可以继续兑换,以此类推,这个数会无限接近于一个数。

像这样:

喝下的汽水空瓶数目
11
1.50.5
1.750.25
1.8750.125

最后得出结论,一元钱可以得到2瓶水和0个瓶子。

因此,喝下的汽水数=money*2。

但是,这是个现实问题,即使多么地接近于2,也不能当成2计算。

姑且把这个数当成1.999999

money汽水数
11.99999
23.999998
35.999997
47.999996
59.999995

所以:

#includeint main ()
{
	int money=0;
	scanf("%d",&money);
	printf("%d",money*2-1);
}
总结

  方法有不同也有好坏,合适当前的情况才是最好的,最后一个方法虽然看起来逼格好高哦,但是一般的情况下谁会把这一道题想这么复杂呢?

前两个方法虽然效率比不上最后一种,但是却更符合我们的思维。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:喝汽水问题——C语言-创新互联
网页路径:http://lszwz.com/article/djoppp.html

其他资讯

售后响应及时

7×24小时客服热线

数据备份

更安全、更高效、更稳定

价格公道精准

项目经理精准报价不弄虚作假

合作无风险

重合同讲信誉,无效全额退款