问题描述: 在一个平面区域内有n*n个子区域,每个区域内存在0-3个生物群落,若该区域内生物群落达到4,则所有生物将平均向相邻的4个区域迁移;当向某个指定区域内投放食物时,该区域内的生物群落将加1,编写程序模拟该环境。。我发现不懂得从哪一方面入手
什么条件下结束递归?能把这道题的代码写下?谢谢,会多加悬赏
追答#include
#include
#include
#define N 10
#define M 4
int feed_food(int arr[][N], int i, int j)
{
if(i=N || j>=N)
return -1;
arr[i][j]++;
if(arr[i][j]<M)
return arr[i][j];
arr[i][j]=0;
feed_food(arr,i,j-1);
feed_food(arr,i,j+1);
feed_food(arr,i-1,j);
feed_food(arr,i+1,j);
return arr[i][j];
}
int main(void)
{
int arr[N][N];
srand((int)time(0));
int i,j;
printf("original array is:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
arr[i][j]=rand()%M;
printf("%d ",arr[i][j]);
}
printf("\n");
}
feed_food(arr,4,5);
printf("after area (4,5) feed food, array is:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d ",arr[i][j]);
printf("\n");
}
return 0;
}
写的比较简单,自己揣摩吧。
4、投食函数:如果是4,则平均分散到a[i-1][j-1]、a[i][j-1]、a[i+1][j]、a[i+1][j+1];否则返回
这点改为
如果是4,则平均分散到a[i-1][j]、a[i][j-1]、a[i+1][j]、a[i][j+1];否则返回