【经验分享】【技巧:技术面试保命之穷举法】

最近在整理博客,一些技术问题和思路分享给大家;希望对于换工作的朋友们有所帮助。
【案例1】 鸡兔同笼问题
鸡兔同笼,有350头,940足,求鸡兔各多少只?
**注:**鸡有2条腿,兔有4条腿。
<解法1>(方程法):
**<解1>:*设鸡有x只,兔y只;则由题可知。
x + y = 350 (1)
2x + 4y = 940 (2)
(2) - (1)2:
2y = 940 - 350
2 = 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资源足够的情形下不失为一种好的解题方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值