鸡兔同笼C++

鸡兔同笼是著名的数学题,本程序将在c++中使用贪心算法和枚举算法写一个“鸡兔同笼”程序

#include <iostream>
#include <cmath>
#include <ctime>
#include <windows.h>

using namespace std;

int head,leg;                               //头和腿
int tmp;                                        //临时
int chicken,rabbit;                        //鸡和兔
int in;                                           //输入

void taxin(){                                   //贪心算法
    tmp=leg-(2*head);                   //使用假设发求鸡和兔的数量
    rabbit=tmp/2;
    chicken=head-rabbit;
}

void qiongju(){                               //穷举算法
    srand(time(0));                          //产生随机数
    if(head==leg/2){                     //如果头的数量是腿的2倍
        chicken=head;                     //那么鸡的数量就是头的数量(因为鸡有2条腿)
        rabbit=0;                              //兔子就是0个
    }
    else if(head==leg/4){              //如果头的数量是退的4倍
        chicken=0;                            //鸡就是0个
        rabbit=head;                        //兔的数量就是头的数量(因为兔有4条腿)
    }
    else{
        while(true){                            //重复执行
            chicken=rand() % 1000;      //鸡的数量在1000以内取随机数
            rabbit=rand() % 1000;        //兔的数量也在1000以内取随机数
            if((chicken*2+rabbit*4==leg)&&(chicken+rabbit==head)){ 
            //如果鸡乘2的数量加兔乘2的数量等于腿的数量(因为鸡有2条腿,兔有4条腿)且鸡的数量加兔的数量等于头的数量
                break;                            //跳出循环
            }
        }
    }
}

int main(){
    cout<<"头的数量+空格+腿的数量:";
    cin>>head>>leg;                      //输入头和腿
    cout<<"1.贪心算法 2.穷举算法:";
    cin>>in;
    if(in==1)
        taxin();
    if(in==2)
        qiongju();
    cout<<"\n鸡的数量:"<<chicken<<"\n";      //输出
    cout<<"兔的数量:"<<rabbit<<'\n';
    system("pause");                   //暂停
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值