回复 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编辑过]