| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3384 人关注过本帖
标题:很简单的题目:求百钱买百鸡
只看楼主 加入收藏
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
收藏
 问题点数:0 回复次数:10 
很简单的题目:求百钱买百鸡
公鸡7元一只,母鸡5元一只,小鸡一元3只。
要求100元钱买100只鸡
程序提示没有错误
但是就是编译的时候没有结果出来
是不是效率太低 要继续等结果的啊
#include<iostream>
using namespace std;
int main(){
for(int i(1);i<=13;i++)
for(int j(1);i<=18;j++) //百钱买百鸡的问题
for(int k(1);k<=98;k++)
{
if(7*i+5*j+k/3-100)
continue;
if(i+j+k-100)
continue;
if(k%3)
continue;
cout<<"cock:"<<i<<endl;
cout<<"hen:"<<j<<endl;
cout<<"chick:"<<k<<endl;
}
}
搜索更多相关主题的帖子: 100 continue include 
2007-08-08 21:05
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
收藏
得分:0 
我知道了
#include<iostream>
using namespace std;
int main(){
for(int i(1);i<=13;i++)
for(int j(1);i<=18;j++) //百钱买百鸡的问题
for(int k(1);k<=98;k++)
{
if(7*i+5*j+k/3-100)
continue;
if(i+j+k-100)
continue;
if(k%3)
continue;
cout<<"cock:"<<i<<endl;
cout<<"hen:"<<j<<endl;
cout<<"chick:"<<k<<endl;
}
}弄错了

ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-08 21:12
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 

女侠,约吗?
2007-08-08 21:12
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
收藏
得分:0 
唉 太粗心了
复制了没有仔细看就编译了

ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-08 21:14
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
to : 狂人老大

你的方法效率确实不高,我想应该可以有其他的思路解这个经典题目。

即使按你的思路,也可以改进使你的算法由O(n^3) ---> O(n^2)

[CODE] int i,j,k;
for (i = 0;i < 14;++i)
for (j = 0;j < 21;++j){
k = 100 - i - j;
if (k%3 == 0 && 7*i + 5*j + k/3 == 100)
cout << "cock\t" << i
<< "\nhen\t" << j
<< "\nchick\t" << k
<< endl;
}[/CODE]

就一点点改变。

Fight  to win  or  die...
2007-08-08 21:50
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
收藏
得分:0 
恩 是比我的好点
谢谢了

ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-08 21:53
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
最简单的方法是用线性代数的知识


自我放逐。。。
2007-08-09 01:17
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
回复:(狂人老大)很简单的题目:求百钱买百鸡

Suppose that we buy x cocks, y hens, and z chickens.

Then

7*x+5*y+z/3=100
x+y+z=100

Eliminating z, we get

10*x + 7*y = 100,

of which (10, 0) is a solution. Then since all solutions
are in the form (10-7*k, 0+10*k), we know there is at most
one extra solution

(10-7*1, 0+10*1) = (3, 10).

Finally, we need to check if (10, 0) and (3, 10) really
gives a solution to the original problem.


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-09 02:54
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
收藏
得分:0 
以下是引用福尔摩斯在2007-8-9 1:17:04的发言:
最简单的方法是用线性代数的知识

线性代数??
怎么弄??


ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-09 10:10
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

这个问题,基本上普遍解法是基于穷举的,8楼hjin的也一样。

猴子的线形代数解,还真想看看!呵呵~


Fight  to win  or  die...
2007-08-09 11:37
快速回复:很简单的题目:求百钱买百鸡
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034095 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved