如何用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;
}
文章来源:https://www.toymoban.com/news/detail-734899.html
文章来源地址https://www.toymoban.com/news/detail-734899.html
到了这里,关于c++鸡兔同笼的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!