文档介绍:汉诺塔程序:1programch720(input,output);2var3 total:integer;4proceduremove(n:integer;z1,z2,z3:char);5begin6 ifn=1thenwriteln(z1,‘→’,z3)7 elsebegin8 move(n-1,z1,z3,z2);9 writeln(z1,‘→’,z3);10 move(n-1,z2,z1,z3)11end12end;13begin {主程序)14write(‘Enterthenumberofdisks:’);15readln(total);16move(total,‘A’,‘B’,‘C’):programtt;vara:array[1..8]ofinteger;b,c,d:array[-7..16]ofinteger;t,i,j,k:integer;procedureprint;begint:=t+1;write(t,'');fork:=1to8dowrite(a[k],'');writeln;end;proceduretry(i:integer);varj:integer;beginforj:=1to8do{每个皇后都有8种可能位置}if(b[j]=0)and(c[i+j]=0)and(d[i-j]=0)thenbegin{判断位置是否冲突}a[i]:=j;{摆放皇后}b[j]:=1;{宣布占领第J行}c[i+j]:=1;{占领两个对角线}d[i-j]:=1;ifi<8thentry(i+1)elseprint;{8个皇后没有摆完,递归摆放下一皇后;若完成任务,打印结果}b[j]:=0;c[i+j]:=0;d[i-j]:=0;{回溯}end;end;beginfork:=-7to16do{数据初始化}beginb[k]:=0;c[k]:=0;d[k]:=0;end;try(1);{从第1个皇后开始放置}:top:=1;sum:=0;j:=0;{j是因子}repeatj:=j+1;sum:=sum+j;ifsum<=nthenbegins[top]:=j;{j进栈} ifsum=nthenbeginprint;{调用过程}sum:=sum-s[top];top:=top-1; {出