很简单的一道模拟题,就是模拟时比较麻烦,个人认为代码写的太长了。。。。 program P1093; var a:array [1..9,1..9] of longint; b:array [1..9] of boolean; b1,b2:array [1..9,1..9] of boolean; n,shit,s1,s2:longint; function check1:boolean; var i,j:longint; begin check1:=true; for i:=1 to 3 do begin for j:=1 to 3 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; fillchar(b,sizeof(b),false); for i:=1 to 3 do begin for j:=4 to 6 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; fillchar(b,sizeof(b),false); for i:=1 to 3 do begin for j:=7 to 9 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; fillchar(b,sizeof(b),false); for i:=4 to 6 do begin for j:=1 to 3 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; fillchar(b,sizeof(b),false); for i:=4 to 6 do begin for j:=4 to 6 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; fillchar(b,sizeof(b),false); for i:=4 to 6 do begin for j:=7 to 9 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; fillchar(b,sizeof(b),false); for i:=7 to 9 do begin for j:=1 to 3 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; fillchar(b,sizeof(b),false); for i:=7 to 9 do begin for j:=4 to 6 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; fillchar(b,sizeof(b),false); for i:=7 to 9 do begin for j:=7 to 9 do if (not b[a[i,j]]) then b[a[i,j]]:=true else exit(false); end; end; function check:boolean; var i,j:longint; begin check:=true; for i:=1 to 9 do begin for j:=1 to 9 do begin if (not b1[i,a[i,j]]) and (not b2[j,a[i,j]]) then begin b1[i,a[i,j]]:=true; b2[j,a[i,j]]:=true; end else exit(false); end; end; end; begin assign(input,'P1093.in'); reset(input); assign(output,'P1093.out'); rewrite(output); readln(n); for shit:=1 to n do begin fillchar(b,sizeof(b),false); fillchar(b1,sizeof(b1),false); fillchar(b2,sizeof(b2),false); for s1:=1 to 9 do begin for s2:=1 to 9 do read(a[s1,s2]); readln; end; readln; if (check) and (check1) then writeln('Right') else writeln('Wrong'); end; close(input); close(output); end.