不用数组输出蛇形矩阵
2016-12-03 22:17
531 查看
在之前我用数组输出过蛇形矩阵,今天在看网页时发现了也可以不用数组和vector也可以实现输出。
出处:http://ayeye.blog.sohu.com/300658293.html
出处:http://ayeye.blog.sohu.com/300658293.html
#include "stdafx.h" #include <stdlib.h> #include <iostream> using namespace std; #define MIN(a,b) ( (a)<(b) ? (a):(b)) int nSize; // 矩阵维度,nSize*nSize; int nHalfSize; int nCircle; // 第几圈 int nEdge; // 第几条边; int nOffset; // 边上第几个值 int nBaseIndex; // 数值基数,当前圈基数+当前边基数 int GetNumber(int i, int j) { // 根据ij判断第几圈 nCircle = MIN(nSize, i); nCircle = MIN(nCircle, j); if (i >= nHalfSize) nCircle = MIN(nCircle, nSize - 1 - i); if (j >= nHalfSize) nCircle = MIN(nCircle, nSize - 1 - j); // 根据ij判断第几条边,顺时针顺序0~3 // 同时计算偏移值; if (i > j) { // 左,下 if (j == nCircle) { nEdge = 3; nOffset = nSize - 1 - nCircle - i; } else { nEdge = 2; nOffset = nSize - 1 - nCircle - j; } } else { // 右,上 if (i == nCircle) { nEdge = 0; nOffset = j - nCircle; } else { nEdge = 1; nOffset = i - nCircle; } } // 计算数值 nBaseIndex = 0; for (int k = 0; k < nCircle; k ++) { nBaseIndex += 4 * (nSize - 1 - 2 * k); } nBaseIndex += (nSize - 1 - 2 * nCircle) * nEdge; return nBaseIndex + nOffset + 1; } int _tmain(int argc, _TCHAR* argv[]) { // 输入 cout << "请输入数组维度N,将输出N*N的蛇形矩阵:\n"; cin >> nSize; nHalfSize = nSize / 2; cout << "打印矩阵如下:\n"; for (int i = 0; i < nSize; i ++) { for (int j = 0; j < nSize; j ++) { cout << GetNumber(i, j) << " "; } cout << "\n"; } system("pause"); return 0; }
相关文章推荐
- Ex5_2_2 输入十个数,输出最大者,不用数组(方法二)
- 给定一个数字n,不用for循环实现输出数组 [1,2,3,4,...,n]
- java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}
- c语言输出sin函数(不用数组)
- 不用循环,对数组每个元素进行处理,类型转换和输出
- C#中怎样随机输出从0到100的数字且不重复(不用数组)
- 不用数组打印蛇形矩阵
- 从高位开始逐位输出一个整数的各位数字(不用数组)
- 合并有重复元素的两个有序数组,输出无重复元素
- 第十六周OJ平台Problem A: 逆序输出数组
- Java生成10个随机数,填充一个数组,用消息框显示数组内容,后求和输出
- 简单编程(二十)将奇数和偶数分别存入到两个不同的数组中,并按奇数、偶数交替的顺序输出
- 用指针指向数组首元素,输出第奇数(1,3,5,7)个学生的数据。
- C#不使用Split()方法,遍历数组,使用“|”分割元素并输出
- php不用数组获取checkbox的值
- 回复 “如果给你一个整数n 你不用for if等类似语句 怎么输出所有小于n的”
- 栈的相关应用(一)--数组的反向输出
- C语言输出旋转后数组中的最小数元素的算法原理与实例
- 实验 6 数组1 2、输入n个整数,存入数组a中,分别按正序和逆序输出这些数
- 第17周 利用指针得到两个数组中相同的数并输出