| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1596 人关注过本帖
标题:[讨论]请问思路是否正确(分苹果问题)
只看楼主 加入收藏
hejing1109
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-27
收藏
 问题点数:0 回复次数:19 
[讨论]请问思路是否正确(分苹果问题)

/*问题::把10个苹果分成三堆,每堆至少1个,应有多少种分法*/
#include <stdio.h>
#include <conio.h>
#define N 10 /*可以扩展到任意自然数>=3*/

void main()
{/*避免重复 要求第一堆总是少于等于第二堆,第二堆总是少于等于第三堆*/
int i=1,j=1,k=1,cout=0;
for(i=1;i<=N/2;i++)
for(j=i,k=N-i-j;j<N-1&&j<=k;j++,k=N-i-j)
cout++;
printf("\n%d Apple Have %d case\n",N,cout);
getch();
}

最后结果显示 8 种

搜索更多相关主题的帖子: 苹果 思路 
2006-11-17 02:43
cailong103
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-11-16
收藏
得分:0 
for(i=1;i<=N/2;i++)
for(j=i,k=N-i-j;j<N-1&&j<=k;j++,k=N-i-j)

这两行不知道是我没看懂还是怎么的,为什么i<=N/2,而不是i<N-1,
还有j=i,又是为什么?难道要求其中有两堆一样吗?
还有请问三堆假如是127,把堆换一下换成712,这是算两种还是一种?
2006-11-17 09:18
cailong103
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-11-16
收藏
得分:0 
太聪明了
2006-11-17 10:47
hejing1109
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-27
收藏
得分:0 
127 721 217只算一种的
汗!

2006-11-17 18:15
wandison
Rank: 1
等 级:新手上路
帖 子:50
专家分:4
注 册:2006-11-7
收藏
得分:0 
i应该是I&lt;N-1

2006-11-17 18:38
slowlybear
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-10-18
收藏
得分:0 

#include <stdio.h>
#include <conio.h>
#define N 10
void main()
int i=1,j=1,k=1,cout=0;
for (i=1;i<=N/2;i++)
for (j=i;j<=N/2;j++)
if (j>(N-i-j)) cout++;
printf("\n%d Apple Have %d case\n",N,cout);
getch();
}

我稍稍修改一下,不知道对不对,我觉得j=i就可以了,j是第二堆,不能比第一堆i少,所以j不用从1开始。


2006-11-17 19:07
hejing1109
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-27
收藏
得分:0 

好想少一种


2006-11-17 23:02
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

for(i=1;i<=3;i++)
{
for(j=i;j<=4;j++)
{
for(k=j;k<=7;k++)
{
if(i+j+k==10)
{
printf("%d--%d--%d\n",i,j,k);
}
}
}
}


倚天照海花无数,流水高山心自知。
2006-11-17 23:59
zxd198778
Rank: 1
等 级:新手上路
帖 子:99
专家分:0
注 册:2006-7-30
收藏
得分:0 
for(i=1;i<=N-1;i++)
{ for(j=i;j<=N-1;j++)
{ for(k=j;k<=N-1;k++)
{ if(i+j+k=10)
{ if(i<j&&j<k)
count++;
printf("%d",count);
}
}
}
}
试以下这个看行不

我一个不懂世事的人,希望能在这里学到我想学的一些东西。
2006-11-18 01:29
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用zxd198778在2006-11-18 1:29:54的发言:
for(i=1;i<=N-1;i++)
{ for(j=i;j<=N-1;j++)
{ for(k=j;k<=N-1;k++)
{ if(i+j+k=10)
{ if(i<j&&j<k)
count++;
printf("%d",count);
}
}
}
}
试以下这个看行不

至少少了 118 22 6 334


倚天照海花无数,流水高山心自知。
2006-11-18 14:42
快速回复:[讨论]请问思路是否正确(分苹果问题)
数据加载中...
 
   



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

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