#include <iostream>
#include <algorithm>
using namespace std;
int maze[105][105];
int n,m,ct=0; //草場個數
int A[105]; //草場面積
int dx[4]={1,0,-1,0}, dy[4]={0,1,0,-1};
//---------------------------------------------------
void pW(){ //測試用
int i,j;
for(i=0; i<n; i++){
for(j=0; j<m; j++) cout<<maze[i][j]<<" ";
cout<<endl;
}
cout<<"---------------------\n";
}
//---------------------------------------------------
void dfs(int x, int y){
int xx,yy;
//pW();
for(int i=0; i<4; i++){
xx=x+dx[i]; yy=y+dy[i];
if(xx>=0 && xx<m && yy>=0 && yy<n){
if(maze[yy][xx]>0){
A[ct] += maze[yy][xx]; //面積累加
maze[yy][xx]=-1;
dfs(xx,yy); //遞迴
}
}
}
}
//==================================================
int main(){
cin>>n>>m;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++) cin>>maze[i][j];
//pW();
for(int yy=0; yy<n; yy++){
for(int xx=0; xx<m; xx++){
if(maze[yy][xx]>0) {
ct++; //草場數目+1
A[ct]=maze[yy][xx]; //該區域面積開始累加
maze[yy][xx]=-1;
dfs(xx,yy); //計算草場面積,0改成-1
//pW();
}
}
}
cout<<ct<<endl;
sort(A+1, A+ct+1);
//for(int i=1; i<=ct; i++) cout<<A[i]<<" ";
cout<<A[ct];
}
請指教