鸡兔同笼 in 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"); //暂停
}