千葉大学 融合理工学府 数学情報科学専攻 数学・情報数理学コース 2021年8月実施 専門 A5
标签:
Author
祭音Myyura (co-authored with GPT 6 Astra)
Description
次の Pascal プログラムについて答えよ。
program mondai(input, output);
var p: array[1..100] of integer; n,i: integer;
procedure q(i: integer);
var k,w,j: integer;
begin
if i=0 then begin
for j:=1 to n do write(p[j]:3);
writeln
end else
for k:=i downto 1 do begin
w:=p[i]; p[i]:=p[k]; p[k]:=w;
q(i-1);
w:=p[i]; p[i]:=p[k]; p[k]:=w
end
end;
begin
readln(n);
for i:=1 to n do p[i]:=i;
q(n)
end.
- を入力したときの出力を記せ。
- 一般の に対する出力を理由とともに述べよ。
题目描述
对所列交换、递归、恢复数组的 Pascal 程序:(1) 写出输入 时的输出;(2) 说明输入一般的 时会输出什么,并证明。
Kai
(1)
1 2 3
2 1 3
1 3 2
3 1 2
3 2 1
2 3 1
(2) の全 個の順列を重複なく一行ずつ出力する。帰納的に q(i) は後ろの 項を固定し、先頭 項の全順列を出力して、呼出し前の配列に戻す。実際、k の各値で末尾 p[i] に置く要素を選び、q(i-1) で残りの全順列を出力し、二度目の交換で状態を復元する。末尾要素が異なる場合の出力は互いに重ならない。