C语言解决螺旋矩阵算法问题的代码示例_C 语言

赶集网校招就采用了螺旋输出矩阵作为程序题,要求将矩阵螺旋输出如:

图中6*6矩阵线条所示为输出顺序,如果输出正确的话应该输出1~36有序数字。
 我想的是这么做的:

#include <stdio.h> 

//#define LEN 1
//#define LEN 2
//#define LEN 3
#define LEN 4 

void printClock(int a[][LEN]){//输出函数
  int t;
  int i = 0, m = 0;
  int j = LEN, n = LEN;
  while (i <= j || m <= n)
  {
    for (t = i; t < j; t++)//输出第m行
    {
      printf("%d ", a[m][t]);
    }
    m++;
    for (t = m; t < n; t++)//输出第j列
    {
      printf("%d ", a[t][j - 1]);
    }
    j--;
    for (t = j - 1; t >= i; t--)//输出第n行
    {
      printf("%d ", a[n - 1][t]);
    }
    n--;
    for (t = n - 1; t >= m; t--)//输出第i列
    {
      printf("%d ", a[t][i]);
    }
    i++;
  }
  printf("\n");
} 

void main(){
  int a[][1] = {1};
  int b[][2] = {1,2,
         4,3
  };
  int c[][3] = {1,2,3,
         8,9,4,
         7,6,5
  };
  int d[][4] = {1,2, 3, 4,
         12,13,14,5,
         11,16,15,6,
         10, 9, 8,7
  };
  int e[][6] = {  1, 2, 3, 4, 5, 6,
          20,21,22,23,24, 7,
          19,32,33,34,25, 8,
          18,31,36,35,26, 9,
          17,30,29,28,27,10,
          16,15,14,13,12,11
  };
  printClock(d);
}

 分别做向右输出,向下输出,向左输出,向上输出,然后就进入一种循环,直到输出结束

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c语言
, 算法
螺旋矩阵
c语言螺旋矩阵算法、c语言螺旋矩阵、c语言输出螺旋矩阵、c语言 数字 螺旋 矩阵、螺旋矩阵算法,以便于您获取更多的相关知识。

时间: 2024-10-25 11:08:30

C语言解决螺旋矩阵算法问题的代码示例_C 语言的相关文章

C语言求矩阵的各列元素之和的代码示例_C 语言

问题描述:统计一个矩阵的各列元素之和.矩阵各元素为整数且绝对值不超过100.要求输入:有多个测试用例,每个测试用例的第一行是空格分隔的两个正整数n和m( 1 < n, m < 80 ),接下来的n行每行有m个空格分隔的整数,组成一个n*m的矩阵.最后一个测试用例n=0 m=0不用处理.要求输出:对每个测试用例,输出一行整数(空格分隔),顺序表示从第1列至第m列的各列元素之和.输入示例: 3 5 1 1 1 2 -1 0 1 0 7 4 0 2 0 -8 -4 2 2 1 1 0 1 0 0 输

桶排序算法的理解及C语言版代码示例_C 语言

理解:桶排序是计数排序的变种,把计数排序中相邻的m个"小桶"放到一个"大桶"中,在分完桶后,对每个桶进行排序(一般用快排),然后合并成最后的结果.基本思想:桶排序假设序列由一个随机过程产生,该过程将元素均匀而独立地分布在区间[0,1)上.我们把区间[0,1)划分成n个相同大小的子区间,称为桶.将n个记录分布到各个桶中去.如果有多于一个记录分到同一个桶中,需要进行桶内排序.最后依次把各个桶中的记录列出来记得到有序序列.效率分析:桶排序的平均时间复杂度为线性的O(N+C

C语言实现选择排序、冒泡排序和快速排序的代码示例_C 语言

选择和冒泡 #include<stdio.h> void maopao(int a[],int len){ int i,j,temp; for(i = 0;i < len - 1 ; i ++){//从第一个到倒数第二个 for (j = 0 ; j < len - 1 - i ; j ++)//排在后的是已经排序的 { if (a[j] > a[j + 1])//大的数换到后面去 { temp = a[j]; a[j] = a[j + 1]; a [j + 1] = tem

C语言的数字游戏算法效率问题探讨实例_C 语言

最近做了这样一个题目,感觉挺有趣~题目如下: 问题描述 Winder 最近在玩一个数字游戏,该游戏是在一个n*m 的网格上进行的,每个格子上有 一个数字,代表这个格子的数值.玩家需要从网格的左上角的格子走到右下角的格子,每次 只能向右或者向下走,并且不能回头.玩家每经过一个格子可以选择分值是否加上该格子的 数值,每次游戏的初始分数都是0. Winder 想知道在每场游戏,他最多能够得到多少分值.但是,Winder 很懒,所以你必 须帮他来完成这件事. 数据输入 输入第一行两个正整数N 和M(0<

纯C语言:贪心Prim算法生成树问题源码分享_C 语言

复制代码 代码如下: #include <iostream.h>#define MAX 100#define MAXCOST 100000 int graph[MAX][MAX]; int Prim(int graph[MAX][MAX], int n){ /* lowcost[i]记录以i为终点的边的最小权值,当lowcost[i]=0时表示终点i加入生成树 */ int lowcost[MAX];  /* mst[i]记录对应lowcost[i]的起点 */ int mst[MAX];  

C语言解字符串逆序和单向链表逆序问题的代码示例_C 语言

字符串逆序上次面试碰到一个单向链表逆序的题目,幸好对字符串逆序比较熟悉,类比做出来了.字符串逆序比较简单,直接上代码: void stringReverse(char* p1,char* p2) { if(p1==p2)return; //swap the value of p1 ,p2 *p1=(*p1)+(*p2); *p2=(*p1)-(*p2); *p1=(*p1)-(*p2); if(p1==p2-1)return; else stringReverse(++p1,--p2); } 调

C++、python和go语言实现的简单客户端服务器代码示例_C 语言

工作中用到了C/S模型,所做的也无非是给服务器发数据,但开发阶段会遇到程序自身的回环测试,需要用到简单的服务端以便验证数据发送的正确性. 写软件用C++,跑测试用python,这段时间也刚好看go语言,所以都要有demo.以下三组程序实现的功能相同,这里一起做下总结. 一.C++实现 Boost.Asio是一个跨平台的C++库,它用现代C++方法为网络和底层I/O程序提供了一致的异步I/O模型. 为了跨平台,我用boost库实现,具体如下. 服务端代码: 复制代码 代码如下: /*      F

C语言 循环详解及简单代码示例_C 语言

C 循环 有的时候,我们可能需要多次执行同一块代码.一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推. 编程语言提供了更为复杂执行路径的多种控制结构. 循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图: 循环类型 C 语言提供了以下几种循环类型.点击链接查看每个类型的细节. 循环类型 描述 while 循环 当给定条件为真时,重复语句或语句组.它会在执行循环主体之前测试条件. for 循环 多次执行一个语句序列,简化管理循环变量

使用C语言打造通讯录管理系统和教学安排系统的代码示例_C 语言

通讯录管理系统实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计算