#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,如果改成>就能过?