回复 3楼 heishu
你的算法还可以优化的! 红色的地方是添加的,你看看对不对?
#include<stdio.h>
int a[100];
int qiuhe(int *q,int n)
//求和函数
{int i,he=0;
for(i=0;i<n;i++)
he+=q[i];
return he;
}
void zhonglei(int j,int k)
{int i,sum;
sum=qiuhe(a,j);
if(20==sum&&j!=1)
//符合条件的输出
{
for(i=0;i<j;i++)
{printf("%d",a[i]);
if(i<j-1)
printf("+");
}
printf("=20\n");
}
else
if(j<7)
{
for(i=k;i<=20;i++)
//不回溯递归
{
a[j]=i;
zhonglei(j+1,k+1);
++k;
}
}
}
void main()
{
zhonglei(0,0);
}