BÀI TẬP 32: MẬT KHẨU_MẢNG 2 CHIỀU

Mật khẩu là một dãy số A có N số nguyên tử bảng vuông S gồm n*n ô, trong đó S[i,j] = A[i] + A[j] với i ≠ j, S[i,j] = 0 nếu i = j.

Yêu cầu: cho trước bảng S, hãy tìm mật khẩu.

Dữ liệu vào: file MATKHAU.INP

- Dòng 1: Ghi số nguyên dương N (N<=30).

- N dòng tiếp theo, mỗi dòng chứa n số nguyên  biểu diễn bảng S (-100 S[i,j] 100).

Dữ liệu ra: File MATKHAU.OUT ghi ra dãy số A.

Ví dụ:

MATKHAU.INP

MATKHAU.OUT

MATKHAU.INP

MATKHAU.OUT

2

0 2

2 0

1 1

4

0 3 6 7

3 0 5 6

6 5 0 9

7 6 9 0

2 1 4 5


CODE THAM KHẢO:

program Mat_Khau;
const   fi='MATKHAU.INP';
           fo='MATKHAU.OUT';
var f,g:text;
    i,n,j,min,k:longint;
    a:array[1..30] of longint;
    s:array[1..30,1..30] of longint;
{-----------------------------------}
function kt:boolean;
var i,j:longint;
begin
for i:=1 to n do
   for j:=1 to n do
     if i<>j then
     if a[i]<>s[i,j]-a[j] then exit(false);
exit(true);
end;
{_---------------------------------}
begin
assign(f,fi);reset(f);
assign(g,fo);rewrite(g);
readln(f,n);
for i:=1 to n do
   for j:=1 to n do read(f,s[i,j]);
for i:=-100 to 100 do
    begin
    a[1]:=i; k:=0;
      for j:=2 to n do
      begin
      a[j]:=s[1,j]-a[1];
         if (a[j]< -100)or (a[j]>100) then
            begin
            k:=1;
            break;
            end;
      end;
      if k<>0 then continue;
        if kt then
           begin
           for j:=1 to n do write(g,a[j],' ');
           break;
           end;
    end;
close(f);close(g);
end.


Nhãn:

Đăng nhận xét

[blogger]

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget