PDA

View Full Version : Ai giúp mình giải bài ma trận xoắn ốc này với!



vichy
04-06-2015, 17:51
Viết chương trình in ra các số nguyên từ 1 đến bình phương N theo hình xoắn ốc với N được nhập vào từ bàn phím. Ví dụ, với N=5 ta có:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

Mình tham gia thi tin học không chuyện thcs và có tham khảo những bài khác trên mạng nhưng trình độ không đủ, đọc không hiểu. Mong các bạn giúp mình, cảm ơn!

tthandb
08-06-2015, 21:46
uses crt;
var
n, w, hang, cot, chanhangtang, chanhanggiam, chancottang, chancotgiam, tang, giam: integer;
matran: array[0..12,0..12] of integer;
begin
clrscr;
readln(n);
hang:=0;
cot:=0;
chanhangtang:=n-1;
chancottang:=n-1;
chanhanggiam:=0;
chancotgiam:=0;
tang:=0;
for w:=0 to n*n-1 do
begin
matran[hang,cot]:= w + 1;
case tang of
0 : if (cot < chancottang) then inc(cot) else
begin
inc(tang);
inc(chanhanggiam);
inc(hang);
end;
1 : if (hang < chanhangtang) then inc(hang) else
begin
inc(tang);
dec(chancottang);
dec(cot);
end;
2 : if (cot > chancotgiam) then dec(cot) else
begin
inc(tang);
dec(chanhangtang);
dec(hang);
end;
3 : if (hang > chanhanggiam) then dec(hang) else
begin
tang:=0;
inc(chancotgiam);
inc(cot);
end;
end;
end;
for hang:=0 to n-1 do
begin
for cot:=0 to n-1 do write(matran[hang,cot],' ');
writeln;
end;
readln;
end.