本文主要是介绍c++鸡兔同笼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如何用c++编写鸡兔同笼
首先,我们需要知道我们的思路
解鸡兔同笼的方法有三种:
1、暴力枚举;
2、假设法:假设全是兔或全是鸡,……;
3、列方程;
今天就用用第一种方法解鸡兔同笼;
第一种方法:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,ji,tu;
bool h=0;//判断是否得到数目
cout<<"输入头数";cin>>a; //头
cout<<"输入腿数";cin>>b; //腿
for(int i=1;i<=a;i++){ //鸡
for(int j=1;j<=a;j++){ //兔
if(i+j!=a)continue;
else{
if(i*2+j*4==b){
ji=i;tu=j;
h=1;
break;
}
}
}
if(h==1)break;
}
cout<<"鸡有"<<ji<<"只"<<endl;
cout<<"兔有"<<tu<<"只"<<endl;
return 0;
}
可如果这么写,它很有可能时间超限。比如:头有100个,就要循环1万次;
可如何优化代码呢?
在的代码里,写了两个for循环,可不可以只写一个呢?
可以。
优化后:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,ji,tu;
bool h=0;//判断是否得到数目
cout<<"请输入头数";cin>>a; //头
cout<<"请输入腿数";cin>>b; //腿
for(int i=1;i<=a;i++){ //鸡
int j=a-i; //兔
if(i*2+j*4==b){
ji=i;tu=j;
h=1;
break;
}
if(h==1)break;
}
cout<<"鸡有"<<ji<<"只"<<endl;
cout<<"兔有"<<tu<<"只"<<endl;
return 0;
}
这篇关于c++鸡兔同笼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!