MMATRIX - SHIFT Operator on Matrix
Tác giả: ll931110
Ngôn ngữ: Pascal
{$MODE DELPHI}
Program MMATRIX;
Const
input = '';
output = '';
maxn = 7;
maxv = 100000;
Var
fi,fo: text;
m,n: integer;
a: array[1..maxn,1..maxn] of integer;
d: array[1..maxn] of integer;
Procedure openfile;
Begin
Assign(fi, input);
Reset(fi);
Assign(fo, output);
Rewrite(fo);
End;
Procedure init;
Var
i,j: integer;
Begin
For i:= 1 to n do
For j:= 1 to n do read(fi, a[i,j]);
End;
Procedure calc;
Var
val,tmp: integer;
i,j,k: integer;
Begin
val:= 0;
For i:= 1 to n do
Begin
tmp:= 0;
For j:= 1 to n do
Begin
k:= i - d[j];
If k <= 0 then k:= k + n;
tmp:= tmp + a[j,k];
End;
If val < tmp then val:= tmp;
If val > m then exit;
End;
If m > val then m:= val;
End;
Procedure attempt(i: integer);
Var
j: integer;
Begin
For j:= 1 to n do
Begin
d[i]:= j;
If i = n then calc else attempt(i + 1);
End;
End;
Procedure closefile;
Begin
Close(fo);
Close(fi);
End;
Procedure printresult;
Begin
m:= maxv;
attempt(1);
Writeln(fo, m);
End;
Begin
openfile;
Repeat
Readln(fi, n);
If n <> -1 then
Begin
init;
printresult;
End;
Until n = -1;
closefile;
End.