生日当天,小思收到了一个神秘的礼物——一颗小黄球。这颗小黄球有着一个梦想:它想要环游世界,奔赴星辰大海。但是小黄球自感脆弱无助,于是就告诉了小思,希望小思能够帮助它完成梦想。小思为它设计了一个3x3大小的九宫格沙盘,让它在里面自由练习滚动,期盼有朝一日小黄球能够规划出自己的征途,此时便是其启程告别之日。 沙盘外部由无限高的玻璃罩包裹,确保小黄球不会滚出沙盘。沙盘内部由9个可以自由升降的高台组成,每个高台有自己对应的编号(1,2,…9)和对应的高度(不一定是中间高四周低),相邻的高台之间由陡坡连接而成,小球可以在上面自由滚动。小球的每次模拟滚动满足以下规则:①初始起点为九宫格中心(⑤号位)。②小黄球会在四周可滚动方向高台中选择高度最小的一个进行滚动,且不具备爬升能力。③若四周可滚动方向高台中存在多个高台同为可选择中的最小值,则小黄球会犹豫不决,对前程感到迷茫,从而停止在原高台上。且小黄球不会滚向相同高度高台上。请你给出小黄球最终会停止在几号高台上。(对题目有疑惑可翻阅文档末)输入格式:一行不大于100的正整数,一共九个,代表高台①~⑨的高度,中间用空格隔开。输出格式:输出一个正整数,表示最终停留在的高台编号。输入样例1:3 6 8 5 11 7 4 8 3输出样例1:1输入样例2:4 6 8 5 11 7 4 8 3输出样例2:4需要提交的测试数据测试样本1:1 3 6 4 10 5 6 2 3测试样本2:5 1 5 2 5 3 5 4 5测试样本3:7 2 4 10 7 10 4 2 6测试样本4、5在代码上交后由评审测试。
就是在3*3矩阵中,从中心开始往四周找最低点,然后再找该最低点四周的最低点,直到没有低于该点的四周点,或者四周点中有多个最低点
int a[3][3];
int func(int *si,int *sj)
{
int i = *si;
int j = *sj;
int min = a[*si][*sj];
int mincount = 0;
if(i>0 && a[i-1][j] <= min)
{
if(a[i-1][j] < min)
{
min = a[i-1][j];
*sj = j;
*si = i-1;
mincount = 1;
}
else
mincount=2;
}
if(i<2 && a[i+1][j] <= min)
{
if(a[i+1][j] < min)
{
min = a[i+1][j];
*sj = j;
*si = i+1;
mincount = 1;
}
else
mincount=2;
}
if(j>0 && a[i][j-1] <= min)
{
if(a[i][j-1] < min)
{
min = a[i][j-1];
*sj = j-1;
*si = i;
mincount = 1;
}
else
mincount=2;
}
if(j<2 && a[i][j+1] <= min)
{
if(a[i][j+1] < min)
{
min = a[i][j+1];
*sj = j+1;
*si = i;
mincount = 1;
}
else
mincount=2;
}
return mincount;
}
int main()
{
int i,j;
int si=1,sj=1;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
while(func(&si,&sj)==1);
printf("%d\n",(si+1)*3+sj+1);
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!