最近在整理博客,一些技术问题和思路分享给大家;希望对于换工作的朋友们有所帮助。
【案例1】 鸡兔同笼问题
鸡兔同笼,有350头,940足,求鸡兔各多少只?
**注:**鸡有2条腿,兔有4条腿。
<解法1>(方程法):
**<解1>:*设鸡有x只,兔y只;则由题可知。
x + y = 350 (1)
2x + 4y = 940 (2)
(2) - (1)2:
2y = 940 - 3502 = 240
所以,y = 120,
由式(1)得出 x = 350 - y = 350 - 120 = 230;
答:根据题目给出条件,鸡有230只,兔120只。
<解2>:设鸡有x只,则由题目中头数和350,得出兔有(350-x)只;由足数和940可知。
2x + 4(350 - x) = 940
故,4x - 2x = 4*350 - 940,
2x = 460
x = 230,兔有 350 - 230 = 120
答:根据题目给出条件,鸡有230支,兔120支只。
<解法2>(穷举法/列表法):
条件1:鸡 + 免 = 350只, 总脚数 = 940
【鸡】【 0 】【 1 】【 2 】…【 230 】
【兔】【 350 】【 349 】【 348 】…【 120 】
【脚】【1400】【1398】【1396】…【 940 】
int x = 350;// 鸡兔合计有350头.
int y = 940;//鸡兔合计有940脚.
for(int i= 0; i <= x; i++)
{
for(int j = x -i; j>=0;j--;)
{
if( y == 2*i + 4*j)// 鸡有2只脚,兔有4只脚.
{
printf("Bingo, there ard %d chicken and %d rabbits, for 2*%d + 4*%d = %d!\n", i, j, i, j, y);
getchar();
exit(0);
}
}
}
<其他解法>:
假设法(假设都是鸡,多出来的腿就是兔的2只腿;或假设都是兔,少出来的是鸡缺的2只腿)等略;请自行百度。
【案例还原】 请说出以下算法的思路,并写出相应程序。
鸡兔同笼,有350头,940足,求鸡兔各多少只?
【得分:A】
含穷举法,加上1至2种其他方法(方程,假设等)。
【得分:B ~ B+】
穷举法,科学实验中,常用的方法;在当前计算机CPU资源足够的情形下不失为一种好的解题方法。