回复 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);
}
重剑无锋,大巧不工