设计一个算法在1、2、…、9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。 例如:1+2+34-5+67-8+9=100
#include<stdio.h> #include<string.h> #define N 9 void AddFun(char *op,int sum,int prevadd,int *a,int i); int main() { int a[N]; int i; char op[N]; for(i=0;i<N;i++) a[i]=i+1; AddFun(op,a[0],a[0],a,1); return 0; } void AddFun(char *op,int sum,int prevadd,int *a,int i) { if(i==N){ if(sum==100){ printf(" %d",a[0]); for(int j=1;j<N;j++){ if(op[j]!=' ') printf("%c",op[j]); printf("%d",a[j]); } printf("=100\n"); } return; } op[i]='+'; sum+=a[i]; AddFun(op,sum,a[i],a,i+1); sum=sum-a[i]; op[i]='-'; sum=sum-a[i]; AddFun(op,sum,-a[i],a,i+1); sum=sum+a[i]; op[i]=' '; sum=sum-prevadd; int tmp; if(prevadd>0) tmp=prevadd*10+a[i]; else tmp=prevadd*10-a[i]; sum=sum+tmp; AddFun(op,sum,tmp,a,i+1); sum=sum-tmp; sum=sum+prevadd; }