C语言编写程序,请大家提供点思路,或者这题应该应用哪一方面去做写一下,大家交流一下把问题解决。

问题描述:在一个平面区域内有n*n个子区域,每个区域内存在0-3个生物群落,若该区域内生物群落达到4,则所有生物将平均向相邻的4个区域迁移;当向某个指定区域内投放食物时,... 问题描述: 在一个平面区域内有n*n个子区域,每个区域内存在0-3个生物群落,若该区域内生物群落达到4,则所有生物将平均向相邻的4个区域迁移;当向某个指定区域内投放食物时,该区域内的生物群落将加1,编写程序模拟该环境。。我发现不懂得从哪一方面入手 展开
 我来答
Go浪人生
2012-02-15 · TA获得超过2472个赞
知道小有建树答主
回答量:738
采纳率:100%
帮助的人:899万
展开全部
思路是:
1、定义一个数组a[n][n];
2、利用随机数%4对其赋值;
3、写投食函数,投食a[i][j],判断是否是4;
4、投食函数:如果是4,则平均分散到a[i-1][j-1]、a[i][j-1]、a[i+1][j]、a[i+1][j+1];否则返回
5、对以上四个区域进行递归调用投食函数。

具体代码自己写吧。如果不懂递归,可以追问。这个题突破点就在递归。
追问
什么条件下结束递归?能把这道题的代码写下?谢谢,会多加悬赏
追答
#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];否则返回
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式