- 13 Tháng mười 2018
- 1,523
- 1,339
- 241
- 19
- Quảng Trị
- Trường TH&THCS Hải Ba
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.
Viết chương trình tìm điểm cực đại của ma trận( mảng 2 chiều ) dương. Một điểm gọi là điểm cực đại nếu nó lớn hơn hoặc bằng các phần tử kề nó. Nếu có 2 hoặc nhiều điểm cực đại ở kề nhau thì chỉ tính một điểm . Hãy đếm xem trong mảng A(mxn) dương có bao nhiêu điểm cực đại
VD: m=3; n=5
3 4 5 2 3
5 9 3 2 4 9;4 là điểm cực đại
3 7 8 1 1 Các phần tử màu đỏ là các phần tử xung quanh số 9
Code:
var
a:array[1..100,1..100] of integer;
Begin
tử khác
0 0 0 0 0 0 0
0 3 4 5 2 3 0
0 5 9 3 2 4 0
0 3 7 8 1 1 0
0 0 0 0 0 0 0 }
for i:=1 to m do
for j:=1 to n do
if (a[i,j]>=a[i-1,j]) and (a[i,j]>=a[i-1,j+1])
and (a[i,j]>=a[i,j+1]) and (a[i,j]>=a[i+1,j+1])
and (a[i,j]>=a[i+1,j]) and (a[i,j]>=a[i+1,j-1])
and (a[i,j]>=a[i,j-1]) and (a[i,j]>=a[i-1,j-1])
then ?
Ai giúp mình làm đoạn cuối với( Nếu có 2 hoặc nhiều điểm cực đại ở kề nhau thì chỉ đếm một điểm )
VD: m=3; n=5
3 4 5 2 3
5 9 3 2 4 9;4 là điểm cực đại
3 7 8 1 1 Các phần tử màu đỏ là các phần tử xung quanh số 9
Code:
var
a:array[1..100,1..100] of integer;
Begin
readln(m);readln(n);
for i:=1 to m do
for j:=1 to n do
readln(a[i,j]);
for i:=0 to m+1 do
for j:=0 to n+1 do
if (i=0) and (j=0) or (i=m+1) or (j=n+1) then a[i,j]:=0;
{vòng lặp này để gán một vòng xung quanh nó bằng 0 để các phần tử ngoài viền so sánh giống các phầnfor i:=1 to m do
for j:=1 to n do
readln(a[i,j]);
for i:=0 to m+1 do
for j:=0 to n+1 do
if (i=0) and (j=0) or (i=m+1) or (j=n+1) then a[i,j]:=0;
tử khác
0 0 0 0 0 0 0
0 3 4 5 2 3 0
0 5 9 3 2 4 0
0 3 7 8 1 1 0
0 0 0 0 0 0 0 }
for i:=1 to m do
for j:=1 to n do
if (a[i,j]>=a[i-1,j]) and (a[i,j]>=a[i-1,j+1])
and (a[i,j]>=a[i,j+1]) and (a[i,j]>=a[i+1,j+1])
and (a[i,j]>=a[i+1,j]) and (a[i,j]>=a[i+1,j-1])
and (a[i,j]>=a[i,j-1]) and (a[i,j]>=a[i-1,j-1])
then ?
Ai giúp mình làm đoạn cuối với( Nếu có 2 hoặc nhiều điểm cực đại ở kề nhau thì chỉ đếm một điểm )