#include<string.h>
typedef struct aa
{
int data; int Parent; int Offset; //偏移量,,}AA;
AA a[1000000];
int N,i,front,rear,cnt=0,cnt1,x,dt[1000000],off[1000000];?
char ss[100],p[100];
void Chg()
{
a[rear].data = a[front].data -i; a[rear].Parent=front; a[rear].Offset = i; if(x ==1) {if(i> a[front].Offset && front>0)? //*****區別於有序數據....
{cnt++;?rear++; }
if(front==0) {cnt++;?rear++; }
} else {cnt++;rear++; }}
int main()
{
front =0; rear=1; printf("輸入數字:\n");scanf("%d",&N); x=0; a[0].data=N; a[0].Offset = 1; //註意這裏是1;不是0; cnt=0; printf("所有的加法情況如下:\n"); while(front!=rear) {//for(i=a[front].Offset;i<=a[front].data/2;i++) ////*****區別於有序數據....
for(i=a[front].Offset;i<=(a[front].data-x)/2;i++)Chg();
?front++;
} int tmpi,tmpx,kk=0; for(i=0;i<rear;i++) { tmpi= i; dt[kk]=a[tmpi].data; while(tmpi != 0) {kk++;?dt[kk]=a[tmpi].Offset;
tmpi =a[tmpi].Parent;
} for(kk;kk>=1;kk--) printf("%d+",dt[kk]);printf("%d\n",dt[kk]);
} printf("***計次數%d\n",cnt+1); return 0;}