念风793 2022-11-04 11:23 采纳率: 0%
浏览 49

二维数组特殊的输出方式不会

输入2个整数m和n,其中m小于24,n小于20
输出m行n列的数,其中数值是从1到m*n,排列方式是蚊香式:第一列从上到下,一旦到头(到边界或前方已经有数)就直角左转继续。

img


这个咋写呀完全没思路😭

  • 写回答

3条回答 默认 最新

  • 於黾 2022-11-04 11:46
    关注

    伪代码:
    先创建m*n的二维数组,然后写个大循环,k从1到m*n
    在循环外面定义一个代表方向的变量dirc,0表示向下,1表示向右,2表示向上,3表示向左,一开始的值是0
    循环一开始将a[i][j]=k++
    然后判断dirc和i,j的关系,如果dirc向下并且已经到了最下,改方向为右(dirc++),或者向右并且到了最右,或者向上到了最上,或者向左到了最左,都执行dirc++
    判断的时候不能只判断是否数组越界,要看继续向前的值是不是0,非0代表已经有值需要转弯
    如果dirc的值是4,让它归0
    判断好方向后开始行走,判断dirc的值(switch),如果是0,i++,如果是1,j++,如果是2,i--,如果是3,j--
    然后就这样一直循环m*n次就把m*n的格子填满了

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月4日