Ai giúp mình với
mình hứa tặng 40 điểm
_______________________________________________________________________________
Trò chơi chẵn lẻ là trò chơi hai đối thủ được mô tả như sau: Xuất phát từ bảng trò
chơi là một bảng vuông kích thước n × n gồm n dòng và n cột. Các dòng của bảng được
đánh số từ 1 đến n, từ trên xuống dưới. Các cột của bảng được đánh số từ 1 đến n, từ trái
qua phải. Trên mỗi ô của bảng ghi một số nguyên. Hai đối thủ luân phiên thực hiện nước đi.
Đối thủ đến lượt chơi của mình được phép xoá dòng cuối cùng nếu tổng các số trên dòng đó
là số chẵn hoặc là cột cuối cùng nếu tổng các số trên cột đó là số chẵn. Trong trường hợp
dòng cuối cùng và cột cuối cùng có tổng là số chẵn thì người chơi chỉ được phép xóa cột
cuối cùng.
Đối thủ thắng cuộc là người xoá được ô cuối cùng của bảng hoặc sau khi thực hiện
nước đi của mình thì tổng các số trên dòng cuối cùng và tổng các số trên cột cuối cùng của
bảng đều là số lẻ. Nếu cả hai người đều không thực hiện được lượt chơi nào thì coi như hai
người hòa nhau.
Yêu cầu: Cho biết bảng số của trò chơi, hãy xác định xem người đi trước có cách chơi giành
phần thắng hay không?
Dữ liệu vào : Từ file văn bản TROCHOI.INP:
– Dòng thứ nhất chứa số nguyên dương n (n ≤ 500).
– Dòng thứ i trong số n dòng tiếp theo chứa n số nguyên dương (mỗi số không
vượt quá 109 và lớn hơn 0) là các số trên dòng thứ i của bảng trò chơi, i = 1, 2, …, n.
Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.
Kết quả: Ghi ra file văn bản TROCHOI.OUT gồm 1 dòng duy nhất thông báo ‘YES’ nếu
người đi trước có cách chơi giành phần thắng và ‘NO’ trong trường hợp người đi sau có
cách chơi giành phần thắng. Nếu hai người hòa nhau thì thông báo “DRAW”.
ví dụ:
input: output:
3 NO
1 2 4
2 5 6
8 4 6
o Dòng thứ nhất chứa số nguyên dương n (n <= 500).
o Dòng thứ i trong số n dòng tiếp theo chứa n số nguyên dương (mỗi số không vượt quá 10^9) là các số trên dòng thứ i của bảng trò chơi, i = 1, 2, …, n.
Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.
Kết quả: Ghi ra k dòng, mỗi dòng là kết quả tương ứng với một bộ dữ liệu theo thứ tự xuất hiện trong file dữ liệu vào: ghi thông báo “YES” nếu người đi trước có cách chơi giành chiến thắng và “NO” trong trường hợp ngược lại.
Ví dụ:
uses crt;
var f:text; n,i,j,don1,cot1,cot2,don2:longint; a:array[1..1000,1..1000]of longint;
function tinh(b,c,d:longint):longint;
var i:longint;
begin tinh:=0;
for i:=1 to d do if b=1 then inc(tinh,a[c,i]) else inc(tinh,a[i,c]);
end;
begin
clrscr;
assign(f,’input.pas’);reset(f);
readln(f,n);
for i:=1 to n do
begin
for j:=1 to n do read(f,a[i,j]);
readln(f);
end;
close(f);
assign(f,’output.pas’);rewrite(f);
don1:=tinh(1,n,n);
cot1:=tinh(0,n,n);
if(don1 mod 2=0)and(Cot1 mod 2=0)then write(f,’NO’) else
if (don1 mod 2=0)and(cot1 mod 2=1)and(tinh(1,n-1,n) mod 2=1)and(tinh(0,n,n-1) mod 2=1) then write(f,’YES’) else
if (cot1 mod 2=0)and(don1 mod 2=1)and(tinh(0,n-1,n) mod 2=1)and(tinh(1,n,n-1) mod 2=1) then write(f,’YES’) else
write(f,’NO’);
close(f);
end.