和C语言的程序一行写不下时,可以有关 大家帮一下

各位大佬看一下,是不是当多個语句与if语句写在一行时只有第一个分号前的语句与if是从属关系,而其它语句都是并列关系(最近看的参考书有问题)


如果被断开的不是宏定义或字符串常量也可以直接换行,即上面的写法可以改为

给定一个含有 M x N 个元素的矩阵(M 行N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素对角线遍历如下图所示。


  

按遍历方向来按规律往结果res中添加数字添加的顺序如下:

根据遍历的方向不同共分为五层,关键就是确定每一层的坐标范围:层数=m+n-1

如果是偶数层则从上边界往下边界遍历,反之如果是渏数层则从下边界往上边界遍历

注意从matrix中取数字的坐标

 

右上移动:坐标[-1, 1],左下移动:坐标[1, -1]
边界问题:左下角和右上角的位置越界需要改變两个坐标之外其余的越界只需要改变一个。
同时改变两个坐标的越界情况即在右上角和左下角的位置。如果在右上角位置还要往右仩走时那么要移动到它下面的位置的,那么:
如果row超过了m-1的范围那么row重置为m-1,并且col自增2然后改变遍历的方向。
如果col超过了n-1的范围那么col重置为n-1,并且row自增2然后改变遍历的方向。
一般的左边越界情况:如果row小于0那么row重置0,然后改变遍历的方向

 



  
 
 






进行while循环,先遍历上邊将所有元素加入结果res,然后上边下移一位如果此时上边大于下边,说明此时已经遍历完成了直接break(即只有一行)。
同理对于下边左边,右边
 



在杨辉三角中每个数是它左上方和右上方的数的和。
 



 
 
 
 

我要回帖

更多关于 C语言的程序一行写不下时,可以 的文章

 

随机推荐