Một số bài về DÃY CON

M

mytab

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

1. Dãy đoạn con: Cho 2 dãy số thực a[1],a[2]... a[n] (1); b[1],b[2]...b[m] (2). Dãy (1) được gọi là dãy đoạn con của dãy (2) nếu các phần tử trong (1) có mặt liên tiếp trong (2). Ví dụ dãy 1,2,1 là dãy đoạn con của dãy 0,1,2,1,4,3,5,7 , còn dãy 1,3,5 thì không phải.

2. Trong 1 dãy số hãy tìm dãy đoạn con có các phần tử bằng nhau liên tiếp dài nhất. Ví dụ trong dãy 1 2 2 2 2 2 1 1 1 3 thì dãy 2 2 2 2 2 là dãy cần tìm.

3. Dãy đơn điệu: Dãy số a[1],a[2]...a[n] được gọi là tăng (giảm) nếu a<=a+1 (a>=a+1) với mọi i= 1,2...,n-1. Kiểm tra dãy số tăng hay giảm. Ngược lại hãy sắp xếp dãy tăng hay giảm tùy theo độ dài dãy đoạn con tăng hay giảm lớn nhất lớn hơn.
______________________________________________________________
Mong các anh chị giúp em :D:D:D
 
M

megamanxza

1. Dãy đoạn con: Cho 2 dãy số thực a[1],a[2]... a[n] (1); b[1],b[2]...b[m] (2). Dãy (1) được gọi là dãy đoạn con của dãy (2) nếu các phần tử trong (1) có mặt liên tiếp trong (2). Ví dụ dãy 1,2,1 là dãy đoạn con của dãy 0,1,2,1,4,3,5,7 , còn dãy 1,3,5 thì không phải.

2. Trong 1 dãy số hãy tìm dãy đoạn con có các phần tử bằng nhau liên tiếp dài nhất. Ví dụ trong dãy 1 2 2 2 2 2 1 1 1 3 thì dãy 2 2 2 2 2 là dãy cần tìm.

3. Dãy đơn điệu: Dãy số a[1],a[2]...a[n] được gọi là tăng (giảm) nếu a<=a+1 (a>=a+1) với mọi i= 1,2...,n-1. Kiểm tra dãy số tăng hay giảm. Ngược lại hãy sắp xếp dãy tăng hay giảm tùy theo độ dài dãy đoạn con tăng hay giảm lớn nhất lớn hơn.
______________________________________________________________
Mong các anh chị giúp em :D:D:D


Câu 1: Bạn phải nói rõ ra là đề bài yêu cầu gì chứ! Ý bạn là cho hai dãy số (1) và (2), kiểm tra xem dãy (1) có phải là dãy con của (2) không chứ gì!
Mã:
[COLOR="Blue"]Uses crt;
var st1, st2: string;
begin
clrscr;
write ('Nhap lien tiep cac phan tu cua day (1), xong thi Enter: '); readln (st1);
write ('Nhap lien tiep cac phan tu cua day (2), xong thi Enter: '); readln (st2);
if POS(st1,st2)=True then write ('Day (1) la day doan con cua day (2)!')
  else write ('Day (1) khong phai la day doan con cua day (2)!');
readln
end.[/COLOR]

Câu 2 do code hơi rối, với lại mình không có thời gian nên để sau nhá! Sắp đi cmn học rồi!

Câu 3 đọc xong deck hiểu gì hết luôn! Mong bạn thông cảm!

Hãy Thanks cho mình để mình có động lực xử 2 bài kia khi đi học về nhá! ;)
 
L

lamdetien36

Nên phân biệt 1 chút, thường thì dãy con là các phần tử không liên tiếp, còn đoạn con là các phần tử liên tiếp.
Bài 2:
Mã:
var
	A: array [0..101] of integer;
	N, i, d, m, gt: integer;
begin
	write('Nhap N: '); readln(N);
	for i := 1 to N do
	begin
		write('     A[', i : 2, '] = ');
		readln(A[i]);
	end;
	d := 0; m := -1;
	A[0] := A[1];
	A[N + 1] := A[N] + 1;
	for i := 1 to N + 1 do
	begin
		if A[i] = A[i - 1] then d := d + 1 else
		begin
			if d > m then
			begin
				m := d;
				gt := A[i - 1];
				d := 1;
			end;
		end;
	end;
	writeln('Ket qua: ');
	for i := 1 to m do write(gt, ' ');
	readln
end.
 
D

duyphuc76nk

Bài 1:Mình đã làm và thử.Các bạn xem có đúng ko

1. Dãy đoạn con: Cho 2 dãy số thực a[1], a[2], … , a[n] (1); b[1], b[2], … , b[m] (2). Dãy (1) được gọi là dãy đoạn con của dãy (2) nếu các phần tử trong (1) có mặt liên tiếp trong (2). Hãy xét xem dãy (1) có là dãy đoạn con của dãy (2) hay không.
VD:
1 2 1 là dãy đoạn con của dãy 0 1 2 1 4 3 5 7
1 3 5 không là dãy đoạn con của dãy 0 1 2 1 4 3 5 7

Bài làm:
uses crt;
var a,b:array[1..100]of integer;
n,i,s,m,j:integer;
t:string;
begin
clrscr;
writeln('Nhap mang thu 1');
writeln;
write('Nhap so phan tu:');readln(n);
for i:=1 to n do
begin
write('Phan tu thu ',i,':');readln(a);
end;
writeln('Nhap mang thu 2');
writeln;
write('Nhap so phan tu:');readln(m);
for j:=1 to m do
begin
write('Phan tu thu ',j,':');readln(b[j]);
end;
if n>m then t:='Mang 1 khong phai la mang con cua mang 2'
else if n=m then
begin
for i:=1 to n do
if a=b then
if i=n then t:='Mang 1 la con cua mang 2';
for i:=1 to n do
if a<>b then
begin
t:='Mang 1 khong la con mang 2';
break;
end;
write(t);
end
else
begin
s:=1;
for j:=1 to m do
if a[1]<>b[j] then s:=s+1
else if a[1]=b[j] then break;
i:=1;
j:=s;
while a=b[j] do
begin
j:=j+1;
i:=i+1;
if i=n then t:='Mang 1 la con cua mang 2';
end;
if t='' then t:='Mang 1 khong la con cua mang 2';
write(t);
end;
readln;
end;
Sai ko chịu trách nhiệm.
 
Last edited by a moderator:
Top Bottom