| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1340 人关注过本帖
标题:[求助]1--20,从中取5个数,不可重复,使它们的和等于65,用C语言该怎么编程?
只看楼主 加入收藏
宇智波斑
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-4
收藏
 问题点数:0 回复次数:15 
[求助]1--20,从中取5个数,不可重复,使它们的和等于65,用C语言该怎么编程?
各大侠不吝赐教,小弟无任感谢!
搜索更多相关主题的帖子: C语言 
2007-05-04 00:58
yhj19880708
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-20
收藏
得分:0 
#include "stdio.h"
main()
{int i,j,k,l;
for(i=1;i<21;i++)
for(j=i;j<21;j++)
for(k=j;k<21;k++)
for(l=k;l<21;l++)
if((i+j+k+l==65)&&i!=j&&i!=k&&i!=l&&j!=k&&j!=l&&k!=l)
printf("%d\t%d\t%d\t%d\n",i,j,k,l);
}

2007-05-04 08:51
宇智波斑
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-4
收藏
得分:0 
多谢老兄,不过这个穷举法计算复杂度是阶乘级的能不能来个有一定算法的
2007-05-04 10:45
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用yhj19880708在2007-5-4 8:51:52的发言:
#include "stdio.h"
main()
{int i,j,k,l;
for(i=1;i<21;i++)
for(j=i+1;j<21;j++)
for(k=j+1;k<21;k++)
for(l=k+1;l<21;l++)
if( i+j+k+l == 65 )
printf("%d\t%d\t%d\t%d\n",i,j,k,l);
}

应该更快吧.

回朔的效率差不多.


倚天照海花无数,流水高山心自知。
2007-05-04 11:34
feelings010
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-4-20
收藏
得分:0 
void main(){
int a[5],i;
do
{int sum=0;
for(i=0;i<5;i++){
sum+=a[i];}
if(sum==65){
printf("the 5 digits are:\n");
for(i=0;i<5;i++)
printf("%d",a[i]);}
else
printf("It isn't exist\n");
}
while(a[i]<=20&&a[i]>=1);
printf("error!");
}


为什么我这样做不行啊?各位朋友帮我看看下,谢谢!
2007-05-04 21:03
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
a[]里面是什么?

倚天照海花无数,流水高山心自知。
2007-05-04 21:58
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 
回5楼的大哥-----
你的那个a[5]数组里的a[0---4]都是个随机给定的,想让sum==65的概率太小了,所以必须就printf("It isn't exist\n");了吧.
还有一点就是虽然说是随机值但是每次给的值好象都一样的-----这点我想问下高手那个随机是怎么回事?>...........





------------------我是菜鸟我怕谁?

偶是菜鸟鸟偶惧WHO?!!!!
2007-05-04 22:01
yhj19880708
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-20
收藏
得分:0 
回复:(nuciewth)以下是引用yhj19880708在2007-5-4 ...

谢谢了,受教


2007-05-05 00:26
snrtuu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-4
收藏
得分:0 

#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,l,m,p,temp;
int a=0,b;
int stor[5],*sum;
for (i=1;i<=20;i++)
for (j=i+1;j<=20;j++)
for (k=j+1;k<=20;k++)
for (l=k+1;l<=20;l++)
for (m=l+1;m<=20;m++)
{
stor[0]=i;
stor[1]=j;
stor[2]=k;
stor[3]=l;
stor[4]=m;
temp=stor[0]+stor[1]+stor[2]+stor[3]+stor[4];
if (temp==65)
{
*sum=NULL;
*sum=temp;
for (p=0;p<5;p++)
{
printf("%4d",stor[p]);
}

printf(" sum=%d\n",*sum);
sum++;
a++;
}
}
printf("number is:%4d\n",a);
printf("please enter any key to end this program!");
scanf("%c",&b);
}
可以试试这个!

2007-05-05 11:04
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用我是菜鸟哦在2007-5-4 22:01:53的发言:
回5楼的大哥-----
你的那个a[5]数组里的a[0---4]都是个随机给定的,想让sum==65的概率太小了,所以必须就printf("It isn't exist\n");了吧.
还有一点就是虽然说是随机值但是每次给的值好象都一样的-----这点我想问下高手那个随机是怎么回事?>...........





------------------我是菜鸟我怕谁?

没有让时间做种.

srand(unsigned int(time(NULL)));


倚天照海花无数,流水高山心自知。
2007-05-05 15:22
快速回复:[求助]1--20,从中取5个数,不可重复,使它们的和等于65,用C语言该怎么编 ...
数据加载中...
 
   



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

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