作业帮 > 综合 > 作业

一个数列如:1,2,3.n求其中任何3个的和等于m的算法,例如m=4,那么004 022 112 013用编程怎么写算法

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/06 01:10:10
一个数列如:1,2,3.n求其中任何3个的和等于m的算法,例如m=4,那么004 022 112 013用编程怎么写算法?
一个数列如:1,2,3.n求其中任何3个的和等于m的算法,例如m=4,那么004 022 112 013用编程怎么写算法
int m,n,n1,n1,s;
void main()
{
scanf(%d,&m);
for(n=m;n>0;n--)
{ for(n1=m;n1>0;n1--)
{
for(n2=m;n2>0;n2--)
{
if(s==(n+n1+n2))
printf("%d%d%d",n,n1,n1);
}
}
}
}
用C语言大体思路是这样,细节部分还得仔细调试.
再问: 谢谢,这方法是对的。但我想要的结果跟这个有点不一样。例如:0, 0, 14 和 0 ,14, 0 和14, 0 ,0只算一个。
再答: 试试看在printf的判断条件加上(i>j&&i>k)||(j>i&&j>k)时continue掉也就是if(i+j+k==m){
    if(i>j&&i>k)||(j>i&&j>k){
        continue;
    }
      printf("%d %d %d\n",i,j,k);
}这样应该可以吧,你先试试
再问: 如果不用三个循环的话?还有其他的方法?
再答: 不用循环那就递归吧,逻辑复杂性差不多的,看你喜欢了