求助
  • 板块学术版
  • 楼主_Komorebi_
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/17 20:35
  • 上次更新2023/10/27 02:36:58
查看原帖
求助
819987
_Komorebi_楼主2022/11/17 20:35

题目描述

下面是一个4×4的矩阵,它的特点是:(1)矩阵的元素都是正整数;(2)数值相等的元素相邻。这样,这个矩阵就形成了一级级“平台”,其最大的“平台”面积为8,高度(元素值)为6。若有一个 N×N的矩阵也具有上面矩阵的特点,求矩阵最大“平台”的面积和高度。
6 6 6 7
1 6 3 7
1 6 6 7
6 6 7 7

输入

第一行为N(I≤N≤I00),以下为N×N的矩阵。

输出

第一行为平台的最大面积;
第二行为元素值。

样例输入

4
6 6 6 7
1 6 3 7
1 6 6 7
6 6 7 7

样例输出

8
6
#include <bits/stdc++.h>
using namespace std;
const int a[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int n,s,maxx,c,f,m[105][105];
void dfs(int x,int y)
{
	int xx,yy;
	for(int i=0;i<=3;i++)
	{
	xx=x+a[i][0];
	yy=y+a[i][1];
	if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&m[xx][yy]==f)
	{
		s++;
		m[xx][yy]=0;
		dfs(xx,yy);
	}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) 
	for(int j=1;j<=n;j++)
	   cin>>m[i][j];
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	{
	if(m[i][j]!=0)
	s=1;
	f=m[i][j];
	m[i][j]=0;
	dfs(i,j);
	if(maxx<s)
	{
		maxx=s;
		c=f;
	}   
	}
	cout<<maxx<<endl;
	cout<<c;
}

爆零了,求大佬改错。

2022/11/17 20:35
加载中...