题目:鸭兔同笼问题
笼子里有一群兔子和鸭子
兔子头+鸭子头=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);
}
运行截图:
总结归纳:
比较不同策略的差异,策略二减少时间复杂度,针对不同的策略会导致步骤难易程度不一样。