创建一个N*N的数组,顺时针依次增大
来源:互联网 发布:淘宝是白号,该怎么升心 编辑:程序博客网 时间:2024/05/18 03:13
第一次写点什么,以后觉得自己也应该记录点什么,不然容易忘记。在未来这也算是个回忆。
创建一个N*N的数组,顺时针依次增大:
#include <stdio.h>#define m 5int h = 1;int a[m][m];int flag = 1;int d = 0;int k = m;void print(){int i = 0;int j = 0;for(i = 0; i < m; i++){for(j = 0; j < m; j++){printf("%d\t",a[i][j]);}printf("\n");}}void judge(){if(h == m*m+1){print();flag = 0;}}void spiral(){int i = 0;while(flag){for(i = d; (i < k) &&(flag != 0); i++){a[d][i] = h++;judge();}for(i = d+1; (i < k) &&(flag != 0); i++){a[i][k-1] = h++;judge();}for(i = k-2; (i >= d) &&(flag != 0); i--){a[k-1][i] = h++;judge();}for(i = k-2; (i >= d+1) &&(flag != 0); i--){a[i][d] = h++;judge();}d++;k--;spiral();}}int main(){spiral(); return 0;}这里的代码用到了递归的思想,下面放一个用c++改写的代码。用到了模板:
#include <iostream> using namespace std;template <int N>class SpiralQueue{private:int a[N][N];int h;int flag;int d;int k;public:SpiralQueue(){h = 1;flag = 1;d = 0;k = N; }void print();void judge();void spiral();};template <int N>void SpiralQueue<N>::print(){int i = 0;int j = 0;for(i = 0; i < N; i++){for(j = 0; j < N; j++){printf("%d\t",a[i][j]);}printf("\n");}}template <int N>void SpiralQueue<N>::judge(){if(h == N*N+1){print();flag = 0;}}template <int N>void SpiralQueue<N>::spiral(){int i = 0;while(flag){for(i = d; (i < k) &&(flag != 0); i++){a[d][i] = h++;judge();}for(i = d+1; (i < k) &&(flag != 0); i++){a[i][k-1] = h++;judge();}for(i = k-2; (i >= d) &&(flag != 0); i--){a[k-1][i] = h++;judge();}for(i = k-2; (i >= d+1) &&(flag != 0); i--){a[i][d] = h++;judge();}d++;k--;spiral();}}int main(){SpiralQueue<20> sq1;cout<<"20 * 20: "<<endl;sq1.spiral(); return 0;}
0 0
- 创建一个N*N的数组,顺时针依次增大
- c语言:使一个N*N二维数组输出呈顺时针螺旋递增
- C++笔记1.0 外部输入数组n,定义一个数组,从外面输入n个数依次放入数组
- 【数组】将N*N的int类型矩阵顺时针旋转90度
- js创建蛇形(螺旋)N*N矩阵,顺时针增加
- N*N顺时针螺旋递增数组(多益网络)
- 定义一个整数N,不用本地变量和循环,输入N,依次判断2N,4N,8N...,一旦大于5000,则倒序输出小于5000的那些数(...,8N,4N,2N,N)
- 顺时针旋转N*N阶矩阵储存的图片
- C#实现N*N的顺时针旋转矩阵
- QT 如何创建一个N行N列的控件
- randperm(N) 产生一个1到N的数组
- 有名的面试题 有一个二维数组(n*n)
- C++输入正整数n, 输出将1~n*n顺时针排列矩阵之数组
- C++输入N个字符串,将他们依次保存到一个字符串数组中,怎么表示字符串输入完成?
- n*n的ZigZag数组
- n*n的ZigZag数组
- n*n的ZigZag数组
- n*n的ZigZag数组
- 数组总结
- 黑马程序员-Java 基础知识1. (笔记部分总结)
- 天气预报插件代码--通过传递城市拼音名,最简单的天气插件--更多看2345网站
- C 指针详述
- Oracle 术语
- 创建一个N*N的数组,顺时针依次增大
- python中常用的字典内建函数
- 南阳理工OJ_题目128 前缀式计算
- 用数字描绘中国互联网20年变迁
- mysql查询在一张表不在另外一张表的记录
- ImportError: No module named bz2
- 第十一周上机实践项目——职员有薪水了
- sublime text 3解放鼠标的快捷键总结
- Spring MVC-注解