算法设计:鸭兔同笼问题

题目:鸭兔同笼问题

笼子里有一群兔子和鸭子

兔子头+鸭子头=40只

兔腿+鸭腿=100条,问多少只兔子,多少只鸭子?

解题思路:

策略1:x只兔子,y只鸭子,x+y=40;4x+2y=100;

策略2:x只鸭子,让鸭子和兔子抬脚等抬到2只时鸭子没有脚了,剩余的都是兔子的脚。剩余脚的个数的一半就是兔子的个数。

策略1代码:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main() {

int x;

for (x = 0; x <= 40; x++) {

int y = 40 - x;

if (4 * x + 2 * y == 100) {

printf("兔子有%d只\n", x);

printf("鸭子有%d只", y);

}

}

}

策略2代码:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main() {

int y= (100 - 2 * 40) / 2;//兔子的数量

int x = 40 - y;//定义鸭子的数量

printf("鸭子的数量为:%d\n",x);

printf("兔子的数量为:%d", y);

}

运行截图:

总结归纳: 

比较不同策略的差异,策略二减少时间复杂度,针对不同的策略会导致步骤难易程度不一样。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值