PDA

View Full Version : Bài toán mảng 1 chiều



kysibongdem_494
18-04-2011, 22:20
Nhập vào dãy số nguyên có n phần tử. In ra màn hình đoạn con có các số hạng dương liên tiếp có tổng lớn nhất.( Nếu có nhiều đoạn con thỏa mãn thì in ra màn hình số đoạn con thỏa mãn và đoạn con đó);

VD:
Input: nhập n=8: 1 2 3 4 5 -1 10 15
Output: Có 1 đoạn con dương có tổng lớn nhất.
Đoạn con dương: 10 15

Mong các anh chị giúp đỡ giùm
*Note: đừng dùng chương trình con

HGMinh95
18-04-2011, 22:58
uses crt;
var a,b: array[1..200] of integer;
n, i, j, k, h, S, vd, vc, Smax:integer;
t:boolean;
begin
clrscr;
Smax:=0;
write(' Nhap n= '); readln(n);
for i:=1 to n do
begin
write(' Nhap a[',i,']: '); readln(a[i]);
end;

t:=false; h:=0;
for i:=1 to n do
begin
if (not t) and (a[i]>0) then
begin
S:=0; t:=true;
vd:=i; vc:=i-1;
end;
if (t) and (a[i]>0) then
begin
vc:=vc+1;
S:=S+a[i];
end;
if (t) and ((a[i]<=0) or (i=n)) then
begin
t:=false;
if (S=Smax) and (S<>0) then
begin
h:=h+2;
b[h]:=vc; b[h-1]:=vd;
end;
if S>Smax then
begin
h:=2; Smax:=S;
b[h]:=vc; b[h-1]:=vd;
end;
end;
end;
writeln(' Co ',h div 2,' doan con co tong lon nhat');
writeln(' Cac doan do la:');
for i:=1 to h do
begin
if i mod 2=0 then continue;
for j:=b[i] to b[i+1] do
write(a[j],' ');
writeln;
end;
readln
end.
Code chưa test thử, thông cảm nha :)

kysibongdem_494
19-04-2011, 18:54
Hình như sai rồi anh ơi, làm ơn sửa giúp em đi
Cho em hỏi: hàm not có tác dụng gì ?

zmt264
19-04-2011, 19:54
Hình như sai rồi anh ơi, làm ơn sửa giúp em đi
Cho em hỏi: hàm not có tác dụng gì ?

Not là toán tử (logic) chứ đâu phải hàm????

HGMinh95
20-04-2011, 08:30
Hình như sai rồi anh ơi, làm ơn sửa giúp em đi
Cho em hỏi: hàm not có tác dụng gì ?
Anh sửa rồi đấy
not là toán tử logic có ý nghĩ phủ định, vd: not true=false

kysibongdem_494
20-04-2011, 09:15
cảm ơn anh HGMinh95 nhiều. thanks luôn zmt264 nữa