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.