c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解

C语言 经典题目螺旋矩阵 实例详解

C语言 经典题目螺旋矩阵

//N阶螺旋矩阵

#include

#include

int main()

{

int N,i,j,n,num=1;

int a[10][10]={0};

printf("输入你要输出的几阶中断:");

scanf("%d",&N);

for(n=0;n<=N/2;n++)

{

for(j=n;j<=N-n-1;j++)

a[n][j]=num++;

for(i=n+1;i

a[i][N-n-1]=num++;

for(j=N-n-1;j>n;j--)

a[N-n-1][j]=num++;

for(i=N-n-1;i>n;i--)

a[i][n]=num++;

}

//输出螺旋矩阵

for(i=0;i

{

for(j=0;j

printf("%2d ",a[i][j]);

printf("\n");

}

system("pause");

return 0;

}

思路是这样的,刚开始很容易想到顺时针赋值,如下图为5阶:分为四个方向顺时针赋值。每个方向负责相同数量的元素。

c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解_第1张图片

但这样,后来发现当N为基数时,最中心一个数不能被赋值。

所以改为还是顺时针赋值,只是->方向多负责一个元素,右| 方向少负责一个元素

c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解_第2张图片

最后的运行结果如下图:

c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解_第3张图片

c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解_第4张图片

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2016-11-30

问题描述: 统计一个矩阵的各列元素之和.矩阵各元素为整数且绝对值不超过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

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

赶集网校招就采用了螺旋输出矩阵作为程序题,要求将矩阵螺旋输出如: 图中6*6矩阵线条所示为输出顺序,如果输出正确的话应该输出1~36有序数字.  我想的是这么做的: #include //#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; w

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

本文实例为大家分享了C语言实现稀疏矩阵的具体代码,供大家参考,具体内容如下 #include "stdio.h" #define maxsize 10 typedef struct { int i,j; //非零元素的行.列 int v; //非零元素的值 }Triple; typedef struct { Triple data[maxsize]; int m,n; //矩阵的行.列 }TSMarix; InitTriple(TSMarix *M) { int i,j,k,v,t;

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

动态规划法 题目描述:给定n个矩阵{A1,A2....An},其中Ai与Ai+1是可以相乘的,判断这n个矩阵通过加括号的方式相乘,使得相乘的次数最少! 以矩阵链ABCD为例 按照矩阵链长度递增计算最优值 矩阵链长度为1时,分别计算出矩阵链A.B.C.D的最优值 矩阵链长度为2时,分别计算出矩阵链AB.BC.CD的最优值 矩阵链长度为3时,分别计算出矩阵链ABC.BCD的最优值 矩阵链长度为4时,计算出矩阵链ABCD的最优值 动归方程: 分析: k为矩阵链断开的位置 d数组存放矩阵链计算的最优值,

C语言实现矩阵翻转 上下翻转与左右翻转 实例代码: #include void matrix (int m, int n, int t) { int arr[m][n]; int i, j, k; for (i = 0; i < m; i++){ for (j = 0; j < n; j++){ scanf("%d", &arr[i][j]); } } if (t == 0){//左右翻转 for (i = 0; i < m;

6b5aa0751a6f1e6a9d0b665a02cc1f46.gif

1.矩阵相乘 矩阵相乘应满足的条件: (1) 矩阵A的列数必须等于矩阵B的行数,矩阵A与矩阵B才能相乘: (2) 矩阵C的行数等于矩阵A的行数,矩阵C的列数等于矩阵B的列数: (3) 矩阵C中第i行第j列的元素等于矩阵A的第i行元素与矩阵B的第j列元素对应乘积之和,即 如: 则: 2. 常用矩阵相乘算法     用A的第i行分别和B的第j列的各个元素相乘求和,求得C的第i行j列的元素,这种算法中,B的访问是按列进行访问的,代码如下: void arymul(int a[4][5], int b[

c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解_第5张图片

本文实例讲述了Java实现的矩阵乘法.分享给大家供大家参考,具体如下: 思路: 矩阵乘法的前提是:前一矩阵的行数 == 后一矩阵的列数(rows == cols) 在满足前提的情况下:前一矩阵的第一行 与 第二个矩阵的第一列 逐个相乘.将乘积求和 作为 结果矩阵的第一个元素 类推刻得到:结果矩阵的 第 [row][col] 个元素 = 前一矩阵的第 row 行 与 后一矩阵的 col列上的元素 逐一相乘 后的乘积之和 代码及解析: 一.算法剖析: 1.设置两个for循环用来控制结果(输出)矩阵的

一.  np.dot() 1.同线性代数中矩阵乘法的定义.np.dot(A, B)表示: 对二维矩阵,计算真正意义上的矩阵乘积. 对于一维矩阵,计算两者的内积. 2.代码 [code] import numpy as np # 2-D array: 2 x 3 two_dim_matrix_one = np.array([[1, 2, 3], [4, 5, 6]]) # 2-D array: 3 x 2 two_dim_matrix_two = np.array([[1, 2], [3, 4],

java 矩阵乘法的mapreduce程序实现 map函数:对于矩阵M中的每个元素m(ij),产生一系列的key-value对 其中k=1,2.....知道矩阵N的总列数;对于矩阵N中的每个元素n(jk),产生一系列的key-value对, 其中i=1,2.......直到i=1,2.......直到矩阵M的总列数. map package com.cb.matrix; import stati

本文实例讲述了python实现矩阵乘法的方法.分享给大家供大家参考.具体实现方法如下: def matrixMul(A, B): res = [[0] * len(B[0]) for i in range(len(A))] for i in range(len(A)): for j in range(len(B[0])): for k in range(len(B)): res[i][j] += A[i][k] * B[k][j] return res def matrixMul2(A, B):

如何计算矩阵乘法,这个大家都知道.通常情况下,我们都是用以下代码实现的: 复制代码 代码如下: for(i=0;i

本文实例讲述了C#实现矩阵乘法的方法.分享给大家供大家参考.具体如下: static double[][] MatrixMultiplication(double[][] matrixOne, double[][] matrixTwo) { int aRows = matrixOne.Length; int aCols = matrixOne[0].Length; int bRows = matrixTwo.Length; int bCols = matrixTwo[0].Length; if

Matrix是Array的一个小的分支,包含于Array.所以matrix 拥有array的所有特性. 但在数组乘和矩阵乘时,两者各有不同,如果a和b是两个matrices,那么a*b,就是矩阵积 如果a,b是数组的话,则a*b是数组的运算 1.对数组的操作 >>> import numpy as np >>> a=np.array([[1,2,3],[4,5,6],[7,8,9]]) >>> a array([[1, 2, 3], [4, 5, 6]

题目要求 从文件读入一个3*3数组,并计算每行的平均值. 参考解答 1. 数据文件:array.dat 创建一个.dat文件用于存放数组文件: 1 3 6 2 9 7 3 6 4 文件名随意啦. 2. 代码 如果需要计算行平均值的话改一下avg = (a[i][0] + a[i][1] + a[i][2]) / 3;这行代码就行了. 太简单了懒得写method操作啦: #include void main(){ FILE *fr; int i, j, a[3][3]; flo

本文实例讲述了Python cookbook(数据结构与算法)字典相关计算问题.分享给大家供大家参考,具体如下: 问题:在字典上对数据执行各式各样的计算(比如求最小值.最大值.排序). 解决方案:利用zip()将字典的键-值对"反转"为值-键对序列. 例如:如下字典存放的股票名称和对应的价格: >>> prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75 }

你可能感兴趣的