题解 | #百钱买百鸡问题#
百钱买百鸡问题
http://www.nowcoder.com/practice/74c493f094304ea2bda37d0dc40dc85b
题意:
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
方法一:
暴力模拟
思路:鸡翁,母鸡,鸡雏的数量范围从0-100,暴力模拟。三重循环,将满足百钱百鸡的答案输出。
#include <bits/stdc++.h>
using namespace std;
int main(){
for(int i=0;i<=100;i++){//i,j,k的范围从0-100,暴力模拟
for(int j=0;j<=100;j++){
for(int k=0;k<=100;k++){
if(i+j+k==100&&5*i+3*j+k*1.0/3==100){//满足百钱百鸡,即可输出
printf("%d %d %d\n",i,j,k);
}
}
}
}
return 0;
}
时间复杂度:
空间复杂度:![]()
方法二:
解方程优化
思路:根据题意:得到方程组
如下图所示,求解该方程组。最后遍历x,并输出满足百钱百鸡的结果。
#include <bits/stdc++.h>
using namespace std;
int main(){
for(int x=0;x<=14;x++){//解方程,计算x的范围是[0,14],枚举x
if((100-7*x)%4==0){
int y=(100-7*x)/4;//求解y,z
int z=100-x-y;
printf("%d %d %d\n",x,y,z);
}
}
return 0;
}
时间复杂度:
空间复杂度:![]()
文远知行公司福利 510人发布