codevs 天梯 蛇形矩阵 暴力

    xiaoxiao2021-03-26  24

    题目:

    小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.

    分析:

    水题,暴力求解。

    代码:

    const   maxn=100; var   a:array[1..maxn,1..maxn] of longint;   n:longint; procedure init; begin   readln(n); end; procedure main; var   i,j,k,len,temp,ans:longint; begin   k:=1;len:=1;i:=(n+1) div 2;j:=(n+1) div 2;a[i,j]:=1;   repeat     inc(j);inc(k);a[i,j]:=k;     for temp:=1 to len do       begin         inc(k);         dec(i);         a[i,j]:=k;       end;     for temp:=1 to len+1 do       begin         inc(k);         dec(j);         a[i,j]:=k;       end;     for temp:=1 to len+1 do       begin         inc(k);         inc(i);         a[i,j]:=k;       end;     for temp:=1 to len+1 do       begin         inc(k);         inc(j);         a[i,j]:=k;       end;     inc(len,2);   until len=n;   ans:=0;   for i:=1 to n do     begin       for j:=1 to n do         begin           write(a[i,j],' ');           if (i=j) or (i+j=n) then             ans:=ans+a[i,j];         end;       writeln;     end;   writeln(ans); end; begin   init;   main; end.

    转载请注明原文地址: https://ju.6miu.com/read-658325.html

    最新回复(0)