Tìm dãy con có độ dài lớn nhất?

tuan linh

New member
Xu
0
Bài tập: Cho dãy số nguyên dương a1, a2,…an.
Dãy số ai, ai+1,…aj thoả mãn ai≤ ai+1≤ …≤aj với 1 ≤ i ≤ j≤n
được gọi là dãy con không giảm của dãy số đã cho.
Yêu cầu: Trong số các dãy con không giảm của dãy số đã cho mà các phần tử của nó đều thuộc dãy số {uk} xác định bởi u1=1, un = un-1+k, hãy tìm dãy con có độ dài lớn nhất.
 
const max=10000;
var
A:array[1..max] of longint;
D:array[0..max] of integer;
n,M:integer;
f: text;
procedure nhap;
var i : integer;
begin
assign(f,'MAXSEQ.INP');
reset(f);
readln(f,n);
for i := 1 to n do readln(f,a);
close(f);
fillchar(d,sizeof(d),0);
end;

function chon(s : integer) : boolean;
var x : longint;
begin
s:=2*s;
x:= trunc(sqrt(s));
chon:= sqr(x)+x = s;
end;
procedure tinh;
var i : integer;
begin
if chon(a[1]) then
d[1]:=1
else
d[1]:=0;
m:=d[1];
for i:= 2 to n do
if chon(a) then begin
if a>=a[i-1] then
d:=d[i-1]+1
else
d:=1;
if d>m then m:=d;
end
else
d:=0;
end;
procedure xuat;
begin
assign(f,'MAXSEQ.OUT');
rewrite(f);
write(f,M);
close(f);
end;
BEGIN
clrscr;
Nhap;
tinh;
xuat;

end.
 

VnKienthuc lúc này

Không có thành viên trực tuyến.

Định hướng

Diễn đàn VnKienthuc.com là nơi thảo luận và chia sẻ về mọi kiến thức hữu ích trong học tập và cuộc sống, khởi nghiệp, kinh doanh,...
Top