问答题

【说明】 计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为: 5 4 1 3 2 3 1 1 2 2 1 2 1 1 1 1 1 1 1 1 共有7种划分。这种划分的程序如下所示。 【程序】 #include <stdio.h> int n[1000],m,k; void output sum() { int j; for(j=0;n[j]!=0;j++) printf("%d\t",n[j]); printf("\n"); } void sum(int i) if(m-n[i]<n[i]) { m=m-n[i]; (1) i++; n[i+1]=0; } else { (2) m-=n[i]; i++; } if(m!=n[i]) sum(i); else output_sum(); if(n[i]>1) { n[i]--; (3) } else { while((n[i]==1)&&(i>O)) { i--; (4) } if(i!=0) { (5) sum(i); } } } void main() { int i; scanf("%d",&n[0]); m=k=n[0]; for(i=1;i<=k;i++) n[i]=0; while(n[0]!=1) { n[0]--; i=0; sum(0); m=k; } }

【参考答案】

(1)n[i+1]=m; (2)n[i+1]=n[i]; (3)sum(i); (4) m+=n[i]; (5)n......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)