#include<iostream>
using namespace std;
#define max 9999
void find_others(int land[4][4], int i, int j,int count)
{ //设置出口,超出边界
if (i<0 || j<0 || i>=4 || j>=4 || land[i][j]!=0)
return;
count++;
land[i][j] = 1; //标记已经遍历的水域
find_others(land, i-1, j , count);//八个方向搜索
find_others(land, i+1, j , count);
find_others(land, i, j-1, count);
find_others(land, i, j+1, count);
find_others(land, i-1,j-1, count);
find_others(land, i-1,j+1, count);
find_others(land, i+1,j-1, count);
find_others(land, i+1,j+1, count);
}
void insertsort(int pond[10])//插入排序
{
for (int i = 1; i < 4; i++)
{
int insert_num = pond[i], j;
for (j = i - 1; j >= 0; j--)
{
if (pond[j] > insert_num)
pond[j + 1] = pond[j];
else
break;
}
pond[j + 1] = insert_num;
}
}
int main()
{
cout<<"池塘大小&个数"<<endl;
cout<<"请输入16个水域的大小:";
int land[4][4];
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cin>>land[i][j];
}
}
cout<<"水域大小如下所示:"<<endl;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cout<<land[i][j]<<" ";
}
cout<<endl;
}
int pond[10]={max,max,max,max,max,max,max,max,max,max};
int k=0;//记录池塘的个数
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(land[i][j]==0)
{
int count=0;
find_others(land,i,j,count);//这句话发挥不了作用
pond[k]=count;
k++;
}
}
}
insertsort(pond);
cout<<"池塘的大小为:";
for(int i=0;i<4;i++)
{
if(pond[i]==max)
{
continue;
}
cout<<pond[i]<<" ";
}
return 0;
}
void find_others(int land[4][4], int i, int j,int count)
改成
void find_others(int land[4][4], int i, int j,int &count)
用引用类型才能起到参数作为返回值效果。值参不能实现此功能。另外用指针也可以
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632