蛇形(回形)矩阵
2015-04-27 15:27
197 查看
代码如下:
/* 蛇形(回形)矩阵的实现: 解题思路: 整体思路:每一圈的数值都是连续的,所以我们一圈一圈的赋值 对一圈的初始化: 1:设置(p,p)每一圈最左上角的坐标 (q,q)每一圈最右下角的坐标 2:对每一圈分四部(上,右,下,左)分别初始化 为了使这四步对称(赋值个数相同),按下图这样初始化 1的位置初始化--->上 2的位置初始化--->右 3的位置初始化--->下 4的位置初始化--->左 1 1 1 2 4 2 4 2 4 3 3 3 */ #include<stdio.h> #include<stdlib.h> //system #define LENTH 100 //数组默认维数 void snack_matrix(int n) { int array[LENTH][LENTH] = {0}; int p = 0; //每一圈(正方形)最左上角坐标(p,p) int q = n-1;//每一圈(正方形)最右下角坐标(q,q) int num = 1;//数组中存放的值,存放一个后+1 int i; while(p < q) { /*初始化----->上*/ for(i=p;i<q;++i) { array[p][i] = num;//行坐标不变,列坐标:p--->q-1 num++; } /*初始化----->右*/ for(i=p;i<q;++i) { array[i][q] = num;//列坐标不变,列坐标:p--->q-1 num++; } /*初始化----->下*/ for(i=q;i>p;--i) { array[q][i] = num;//行坐标不变,列坐标:q--->p+1 num++; } /*初始化----->左*/ for(i=q;i>p;--i) { array[i][p] = num;//列坐标不变,行坐标:q--->p+1 num++; } p++;//为下一个圈做准备 q--; } if(n%2 != 0) //维数是奇数,最中间一个得单独赋值(此时p=q)不进入while循环赋值 { array[n/2][n/2] = num; } for(i=0;i<n;++i) { for(int j=0;j<n;++j) { printf("%d\t",array[i][j]); } printf("\n");//输满一行后换行 printf("\n"); } } int main() { system("mode con cols=100 lines=100"); system("color 0A"); int n; printf("please input the size of matrix:\n"); scanf("%d",&n); snack_matrix(n); return 0; }
相关文章推荐
- 蛇形矩阵 java实现
- C++实现蛇形矩阵
- 给一个正整数N,打印NxN的蛇形矩阵(二) 之空间复杂度O(1)
- 2017腾讯校招模拟题----环形蛇形矩阵
- 蛇形矩阵
- 二维数组蛇形和Z形矩阵输出
- 矩阵蛇形填数和顺时针输出
- php打印蛇形回路二维矩阵问题
- 给一个正整数N,打印NxN的蛇形矩阵(二) 之空间复杂度O(1)
- ACM编程比赛入门题目之蛇形矩阵 CodeVS/wikioi 1160
- java蛇形矩阵输出方法(顺时针、逆时针)
- “IBM南邮杯”南京邮电大学第二届大学生程序设计竞赛之预赛-蛇形矩阵
- 算法 - 蛇形矩阵输出
- PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
- 蛇形矩阵
- 《原创》蛇形矩阵
- 蛇形矩阵
- LeetCode:蛇形矩阵II(spiral matrix II)
- 蛇形与回型矩阵实现
- 华为OJ:蛇形矩阵