有以下这样的问题
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
这个问题的意思呢,其实就是公鸡一只五块钱,母鸡一只三块钱,小鸡三只一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
其实这个问题呢,很简单,我们可以先假设一只公鸡的数量最多是100/5=20,也就是公鸡最多的数量是20只,母鸡的数量最多为100/3=33(取整),小鸡的话因为最多只能有100只,所以小鸡最多的数量为100。
那么这样的话,问题就好解决了,可以通过以下代码来实现这个算法.
(这里使用的是C++的代码,和C语言的代码没什么区别,只是输出那里不一样而已)
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
/* ----------问题-----------
公鸡一只五块钱,母鸡一只三块钱,小鸡三只一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
*/
int main(void) {
string line(50, '-');
int cock = 0; //公鸡的数量
int hen = 0; //母鸡的数量
int chick = 0; //小鸡的数量
int ret = 0; //共有多少种方案
cout << line << endl;
for (cock = 0; cock <= (100 / 5); cock++) {
for (hen = 0; hen <= (100 / 3); hen++) {
for (chick = 0; chick <= 100; chick++) {
if (cock * 5 + hen * 3 + chick/3 == 100 && (cock + hen + chick) == 100) {
cout << "公鸡:" << cock << " 母鸡:" << hen << " 小鸡:" << chick << endl;
cout << line << endl;
ret++;
}
}
}
}
cout << "共有" << ret << "种方案" << endl;
cout << line << endl;
system("pause");
return 0;
}
运行程序的结果为
这样结果就出来了,喜欢的可以点点赞哦~~