求解惑
查看原帖
求解惑
424777
AgonyMyself楼主2021/12/8 19:20
#include <iostream>
#include<algorithm>
#include<cstdio> 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
struct node{
	int x,y,value;
};
node a[2000];
bool com(node aa,node bb)
{
	return aa.value>=bb.value;
}
int n,m,num,ans;
int map[1000][1000];
bool flag[1000][1000];
int xx[8]={0,0,1,1,1,-1,-1,-1},yy[8]={1,-1,1,0,-1,1,0,-1}; //定义八个方向 
void dfs(int x,int y)
{
	flag[x][y]=1;
	for(int ii=0;ii<8;ii++)
	{
		int xxx=x+xx[ii];
		int yyy=y+yy[ii];
		if(xxx<1||xxx>n||yyy<1||yyy>m)
		continue;
		if(!flag[xxx][yyy]&&map[xxx][yyy]<=map[x][y])
		dfs(xxx,yyy); 
	}
}
int main(int argc, char** argv) {
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{
		num++;
		scanf("%d",&map[i][j]);
		a[num].x=i,a[num].y=j,a[num].value=map[i][j];
	} 
	sort(a+1,a+num+1,com);
	for(int jj=1;jj<=num;jj++)
	{
		if(flag[a[jj].x][a[jj].y]==0)
		{
				ans++;
			dfs(a[jj].x,a[jj].y);
		}
	}
//	ans=ans-1;
	printf("%d\n",ans);
	return 0;
}

为什么我在com比较函数中,用>=答案全wr,如果改成>就能过?

2021/12/8 19:20
加载中...