Cắt mảng trong Pascal

Cắt mảng theo một tỉ lệ: Viết chương trình nhập vào mảng n số nguyên (n < 1000). Hãy cắt mảng thành 2 phần sao cho chênh lệch (giữa tổng các phần tử của hai phần) là nhỏ nhất

VD: Mảng cho:

5 4 6 1 1 7 6 9 9 12

Cắt thành 2 dãy đều có tổng bằng 30

5 4 6 1 1 7 6 9 9 12

 

Dữ liệu vào file: cut.inp Dữ liệu ra file: cut.out
– Dòng 1: chứa số n- Dòng 2 chứa n số cách nhau ít nhất 1 khoảng trắng – Dòng 1: chứa phần dãy 1- Dòng 2: Chứa phần dãy 2




















	





program Cat_mang;
var i,n,s,min,vt,S1:integer; a: array[1..1000] 








 of integer;
f:text;

begin
{----Doc file vua doc vua tinh tong----}
    s:=0;
    assign(f,'cut.inp'); reset(f);
    readln(f,n);
    for i:=1 to n do
        begin read(f,a[i] ); s:=s+a[i] 





; end;
    close(f);
{--------ct chinh----------}
    Min:=S;vt:=n;S1:=0;
    for i:=1 to n do
        begin
            s1:=s1+a[i] 




	;
            if abs(s-2*s1)<min then begin vt:=i;min:=abs(s-2*s1); end;
        end;
{----Mo file de ghi----}
    assign(f,'cut.out'); rewrite(f);
 	for i:=1 to vt do write(f,a[i] 

,' ');
    writeln(f);
    for i:=vt+1 to n do write(f,a[i] 

,' ');
close(f);
end.

 

Read:   Tuyển chọn các bài toán hay và khó phần hệ thức về cạnh và góc trong tam giác vuông
Hình đại diện của người dùng

admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *