如何顺时针螺旋输出矩阵数组 发表于 2018-01-24 | 分类于 算法 | | 阅读次数 昨天展示了如何生成一个顺时针旋转矩阵数组(查看),今天就来逆向思维一下,如何顺时针螺旋输出一个矩阵。 123456789101112131415161718192021222324252627282930313233343536373839#include <stdio.h>int arr[5][5] = { { 1, 2, 3, 4, 5}, { 16, 17, 18, 19, 6}, { 15, 24, 25, 20, 7}, { 14, 23, 22, 21, 8}, { 13, 12, 11, 10, 9},};int main(int argc, const char * argv[]) { // 初始的区间坐标,根据初始矩阵的大小设定 int startX = 0, endX = 4; int startY = 0, endY = 4; while(startX<=endX && startY<=endY) // 循环条件 { int i; for(i=startX; i<=endX; i++){ // 输出上边的行 printf("%d ",arr[startY][i]); } startY ++; // 行的开始坐标增加 for(i=startY; i<=endY; i++){ // 输出右边的列 printf("%d ",arr[i][endX]); } endX --; // 列的结束坐标减小 for(i=endX; i>=startX; i--){ // 输出下边边的行 printf("%d ",arr[endY][i]); } endY --; // 行的结束坐标减小 for(i=endY; i>=startY; i--){ // 输出左边的列 printf("%d ",arr[i][startX]); } startX ++; // 列的开始坐标增加 } printf("\n"); return 0;} 上述5*5的螺旋矩阵运行后的结果 扩展阅读 如何生成一个旋转矩阵数组 欢迎您扫一扫上面的微信公众号,订阅我的博客! 如果你觉得我的文章还不错,欢迎打赏~ 赏 微信打赏 支付宝打赏