评论

收藏

[C++] C++ 穷举算法求解鸡兔同笼问题

编程语言 编程语言 发布于:2021-08-10 16:29 | 阅读数:539 | 评论:0

今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔几何?
#include <iostream>
using namespace std;
int scanning(int head, int foot, int* chicken, int* rabbit);
int main()
{
  int chicken, rabbit,head, foot;
  cout << "穷举法求解鸡兔同笼问题" << endl;
  cout << "请输入头数" << endl;
  cin >> head;
  cout << "请输入脚数" << endl;
  cin >> foot;
  if ((scanning(head, foot, &chicken, &rabbit))== 1)
  {
    cout << "鸡有:" << chicken << "只" << endl;
    cout << "兔有:" << rabbit << "只" << endl;
  }
  else
  {
    cout << "无解" << endl;
  }
  return 0;
}
int scanning(int head, int foot, int* chicken, int* rabbit)
{
  int re, i, j;
  re = 0;
  for (i = 0; i <= head; i++)
  {
    j = head - i;//当i为0时一共有j头,i+j=head;
    if (i * 2 + j * 4 == foot)
    {
      re = 1;
      *chicken = i;//如果条件满足,那就把i给鸡
      *rabbit = j;//如果条件满足,那就把j给兔
    }
  }
  return re;
}
换一种写法(双重循环)
//从0开始循环,万一全是兔子或者全是鸡呢对吧
for (i = 0; i <= head; i++)
  {
    for (j = 0; j <= foot; j++)
    {
      if ((i + j == head) && (i * 2 + j * 4 == foot))
      {
        re = 1;//标记
        *chicken = i;
        *rabbit = j;
      }
    }
  }
您想请我喝瓶水吗?建议打赏价格在2元一下。


关注下面的标签,发现更多相似文章