首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

分桃子有关问题的算法

2012-06-03 
分桃子问题的算法问题:有一堆桃子,分给三组人。只分给第一组每人7个,只分给第二组 每人8个,只分给第三组每

分桃子问题的算法
问题:有一堆桃子,分给三组人。只分给第一组每人7个,只分给第二组 每人8个,只分给第三组每人9个。一共多少桃子?每组几个人?

我的算法太慢了,有什么好的算法?

C/C++ code
#include <iostream>using namespace std;int main(){    int n,x,y,z;    for(x=1;x<100;x++)    for(y=1;y<100;y++)    for(z=1;z<100;z++)    for(n=1;n<1000;n++)    if((n == x*7)&&(n == y*8)&&(n == z*9))    {    cout << x<< endl;    cout << y<< endl;    cout << z<< endl;    cout << n<< endl;    }    return 0;}


[解决办法]
哦。是我想简单了,没考虑周全。有2种解决办法:
1、思路简单点,还是用回蛮力搜索,不过代码要改改,参考这样写:
for(n=1; n<INT_MAX; n++)
if(n%7==0 && n%8==0 && n%9==0)
{
cout<<n/7<<endl;
cout<<n/8<<endl;
cout<<n/9<<endl;
cout<<n<<endl;
}
运算符 "%" 用于整型数值运算表示 求余,如果余数为零意味着整除。
2、仍求最小公倍数,相信大部分情形比蛮力搜索要快。简单的算法有用辗转相除法求最大公约数来间接求最小公倍数的。
[解决办法]
桃子数7*8*9*n,n为自然数
第一组人数8*9*n,第二组人数7*9*n,第三组人数7*8*n
[解决办法]
四楼的意思是桃子数是7*8*9的整数倍,第一组的人数是8*9的整数倍,第二组的人数是7*9的整数倍,第三组的人数是7*8的整数倍,这样就能很明了的看出每组有多少人了。

热点排行