【分析解答题】
【说明】 设有3n+2个球互连,将自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数,如下图所示:

其中填自然数的思想如下; (1)先自左向右,第1列中间1个填数,然后第2列上、下2个填数,每次2列;但若n为偶数,最后1次只排第1列中间一个数。 (2)自右向左,先右第1列中间填数;若n是奇数,再右第2列中间填数。然后依次右第1列上、下2个填数,再右第2列中间1个填数,直到左第2列为止。 【程序】 #include <stdio.h> #define size 10 int a[3][size]; void main() { int i,k,m,n; printf("imput the n:"); scanf("%d",&n); k=1; for(i=0; i<=n/2; i++) { a[1][2*i]=k; k++; if((i==n/2)&&{{U}} (1) {{/U}}||(i<n/2)) { a[0][2*i+1]=k; k++; {{U}} (2) {{/U}} k++; } } if(n%2==1) { {{U}} (3) {{/U}}k++;m=n; } else{{U}} (4) {{/U}} for(i=0; i<n/2; i++) { a[1][m-2*i]=k; k++; {{U}} (5) {{/U}} k++; a[2][m-2*i-1]=k; k++; } a[1][1]=k; printf("\n"); printf(" "); for(i=1; i<=n; i++)printf("%6d",a[0][i]); printf("\n\n");for(i=0; i<=n+1; i++)printf("%6d",a[1][i]); printf("\n\n"); printf(""); for(i=1; i<=n; i++)printf("%6d",a[2][i]); printf("\n"); }