问题 问答题

【说明】
本程序在3×3方格中填入1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3×3方格中的每个方格按行按列(先行后列)序号排列为:0,1,2,3,4,5,6,7,8。
程序采用试探法,即从序号为0的方格开始,为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数。如不能为当前方格找到一个合理的可填整数,就要回退到前一方格,调整前一方格的填入整数;直至序号为8的方格也填入合理的整数后,就找到了一个解,将该解输出。再调整序号为8的方格所填整数,继续去找下一个解。为了检查当前方格的填入整数的合理性,程序引入二维数组check Matrix,存放需要进行合理性检查的相邻方格的序号。
# include <stdio. h>
# define N 12
int b[N+1];
int pos;
int a[9];/* 用于存储诸方格所填入的整数*/
int AllNum=0;/* 统计有多少种填法*/
int checkMatrix[][3]= -1,0,-1,1,-1,
0,-1,1,3,-1,2,4,-1,
3,-1,4,6,-1,5,7,-1;
void write(int a[])
int i, j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf("%3d", a[3*i+j]);
printf("\n");


int isPrime(int m)
int i;
if(m==2)return 1;
if(m==1 ‖ m%2==0)return 0;
for(i=3; i*i<m;)
if(m%i==0)return 0;
i+=2;

return 1;

int selectNum(int start)
int j;
for(j=start; j<=N; j++)
if(b[j])return j;
return 0;

int check()/*检查填入pos位置的整数是否合理*/
int i,j;
for(i=0; (j= (1) )>=0; i++)
if(!isPrime(a[pos]+a[j]))
(2) ;
(3) ;

extend ()/* 为下一方格找一个尚未使用过的整数*/
a[ (4) ]=selectNum(1);
b[a[pos]]=0;

void change ()/*为当前方格找下一个尚未使用过的整数(找不到回溯)*/
int j;
while(pos >=0 && (j=selectNum( (5) ))==0)
b[a[pos--]]=1;
if(pos<0)return;
b[a[pos]]=1; a[pos]=j; b[j]=0;

int find ()
int ok=1;
pos=0; a[pos]=1; b[a[pos]]=0;
do
if(ok)
if(pos==8)
write(a);
change();
AllNum++;/* 统计有多少种填法*/

else extend();
else change();
ok=check();
while(pos>=0);

void main()
int i;
for(i=1; i<=N; i++) b[i]=1;
find();
prinrf("共有%d种不同填法!/n", AllNum);

答案

参考答案:
(1)checkMatrix[pos][i]
本处填空是在循环检查填入pos位置的整数是否合理,把与pos相邻的数都求和判断是否为质数。
(2)return 0
若不是质数则返回0,表示不可以。
(3)return 1
若相邻的数都是质数则返回1,表示可以。
(4)++pos
本处填空是为下一个方格找一个尚未使用过的整数。
(5)a[pos]+1
本处填空是在循环为当前方格找下一个尚未使用过的整数。

阅读理解与欣赏

阅读下面的文章,完成小题。(22分)

徒儿功成,拜别师父下山。

师父送至山门。

风雨凄迷,山色空濛。

山风拂动师父银髯,撩起师父衣带。师父走了,就如山间一片飘零的黄叶。

这是师父最后一个徒儿,师父再也不会收徒了。师父潜心武功绝技“天罡刀法”的修炼,终生不娶,因而没有子嗣,以后就只有师父一个人孤守寒山了。这也是师父一生中最疼爱的一个徒儿,聪明好学,伶俐精明,平日饮食起居待师父如同亲父。师父于是把毕生心血全都传给了他。此时此刻,师父望着徒儿踽踽而行的背影,心想以后他立足江湖,是可以大有作为的,因而孤寒凄苦的同时,心中也就有了欣慰。

可是,就在这时候,徒儿回首了。

师父一怔。

徒儿不该回首,这是武林中的规矩。徒儿回首意味着他对师父还有所求。可是,这位风烛残年的师父已经一无所有了。

是师徒情份实在难分难舍么?

师父想到这层,心中不快:似这等儿女情长,今后怎生成得大器?却又一热:一日为师终生为父,何况自己待他如同亲生,这孩子怎能丢舍得下也是人之常情。这么想着,又见那凄迷冷雨,徒儿可还是光着个脑袋呢!于是一阵心痛,慌忙回身找了把雨伞,给徒儿送去。

徒儿在前面断崖边的青石板小道上跪下了。

师父热泪盈眶,慌忙上前伸出双手,欲将徒儿扶起。

却是扶不起。

师父愕然。

一会儿心里明白了,师父好容易冷静下来,说:“天罡刀法乃我平生绝技,于今你已经得到了,可以无敌于天下了,你还有什么不满足的呢?”

徒儿拜磕在地,说:“师父曾教我,金、木、水、火、土五行相克相生,徒儿想这天罡刀法总有解法,望师父教我。”

师父说:“刀法乃精、气、神所致,实在五行之外。”

“谢师父。”徒儿起来,拱手。然后背转身去,却是不走。横在小道上,如一截树桩。

“师父,天罡刀法就算无敌于天下,若是师父另传他人,徒儿与他也只是个平手。”

师父长叹,说:“为师已是风烛残年,你是我最后一个徒弟,这话可不是今天说的呵!”

“别怨徒儿放心不下。”徒儿说着,别过脸拿眼睛向小道一边的断崖斜斜,“师父从这儿跳下去,就算说了真话。”

断崖万丈,但见崖边烟缭雾绕。

师父心中打个寒噤,随即哈哈大笑。

师父说:“只是担心爱徒的刀法未必学到了家。”

徒儿想,他的刀法已经炉火纯青,这一点他自己心里绝对有把握;师父笑,说明这刀法果然有解。

“求师父指点。”徒儿又跪下了。

师父把撑着的伞收拢,一边说:“何必如此多礼,起来吧。”

待徒儿起来,师父将那伞伸到他面前说:“你未必一刀能断得了它。”

徒儿知道江湖上有以伞为兵器的,并且巧藏机关,暗器伤人煞是厉害。但是师父所用兵器虽多,唯独没用过伞;况且,这把普通的竹骨纸伞,还是他自己给师父买的,就在附近小镇上一家伞铺里买的。难道师父有什么神功一下子将它变成了铜针铁骨?即使是铜针铁骨,他的天罡刀法只要斜削下去也能将它挥为两段。

徒儿于是想:好吧,就削了这伞,看你老东西还有什么说的!想罢,抽出刀来,运

足平生功力,斜着照准那伞,一刀挥去。这自然是一把极普通的伞,哪里需要许多功力。一刀下去,纸伞顿时骨散筋飞,老师父手里握着的只是一把竹匕。然而说时迟那时快,就在徒儿用力躬身的一瞬,师父的竹匕也就从他的后脑直穿咽喉,把他钉在青石板上。

师父老泪纵横,一声长啸,扑下山崖。

山雨凄迷,山风如诉。

小题1:“风雨凄迷,山色空濛”( 第3段),写景简洁,分析它在文中的作用。(4分)

小题2:联系上下文,仔细揣摩加横线的句子:师父心中打个寒噤,随即哈哈大笑。师父为什么打寒噤?怎么理解师父的笑?(4分)

小题3:文中几次写到伞,有哪些含义?(3分)

小题4:结合文章内容,分析师父、徒儿的形象。(6分)

小题5:师父为什么亲手杀死徒儿?最后师父为什么自己也扑下山崖?(5分)

论述题