回复 9楼 吹水佬
跟发票有什么关系?没听明白呢
回复 8楼 九转星河
由于用链表,只好用结构体

程序代码:#include<stdio.h>
#include<stdlib.h>
void judge(int a[],int k[],int n)
{
int i=0;
for (i=0;i<n+1;i++)
if (k[i]==1)
printf("%-3d",a[i]);
printf("\n");
}
int fun(int a[],int k[],int x,int goal,int n,int size_a)
{
if (n!=-1)
{
fun(a,k,x,goal,n-1,size_a);
if (x>goal)
return (x);//这句是参考10楼的,原来加了没有影响~
k[n]=-k[n];
fun(a,k,x=x+a[n],goal,n-1,size_a);
if (x==goal)
judge(a,k,size_a);
k[n]=-k[n];
}
return (x);
}
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,10};
int *k=(int*)malloc(sizeof(a)); //k为状态变量数组
int goal=20; //goal为目标数
int n=sizeof(a)/sizeof(int)-1; //n为遍历状态的最大位数
memset(k,-1,sizeof (a));
fun(a,k,0,goal,n,n);
return 0;
}
[此贴子已经被作者于2016-12-15 15:14编辑过]
