递归和非递归方法打印螺旋矩阵
来源:互联网 发布:韩剧秘密知乎 编辑:程序博客网 时间:2024/06/05 05:49
之前考虑的是方阵,现在是矩阵
#include "stdio.h"#include <iostream>void SetMatrix1(int **matrix, int x, int y, int k) {int start=1;if(x==y)matrix[x/2][y/2]=x*x;for(int d=0;d<k;d++){for (int i = d; i < y-1-d; i++) //上部 matrix[d][i] = start++;for (int j = d; j < x-1-d; j++) // 右边matrix[j][y-1-d] = start++;for (int m = y-1-d; m >d ;m--) // 底部 matrix[x-1-d][m] = start++;for (int n = x-1-d; n > d; n--) // 左边 matrix[n][d] = start++;}}void SetMatrix(int **matrix, int x, int y,int d,int k,int start) {if(d==k){if(x==y)matrix[x/2][y/2]=x*x;return;}for (int i = d; i < y-1-d; i++) //上部 matrix[d][i] = start++;for (int j = d; j < x-1-d; j++) // 右边matrix[j][y-1-d] = start++;for (int m = y-1-d; m >d ;m--) // 底部 matrix[x-1-d][m] = start++;for (int n = x-1-d; n > d; n--) // 左边 matrix[n][d] = start++;SetMatrix(matrix,x,y,d+1,k,start);}void main() {int i, j;int m,n;scanf("%d%d", &m,&n);int **matrix; //螺旋矩阵(二维数组)matrix = (int **)malloc(m * sizeof(int *)); //为矩阵分配空间for (i = 0; i<m; i++)matrix[i] = (int *)malloc(n * sizeof(int));for(i = 0; i < m; i++)for (j = 0; j < n; j++)matrix[i][j]=0;int max=(m>n)?m:n;SetMatrix(matrix, m, n,0,max/2,1);//打印螺旋矩阵for(i = 0; i < m; i++) {for (j = 0; j < n; j++)printf("%d ", matrix[i][j]);printf("\n");}}
- 递归和非递归方法打印螺旋矩阵
- 递归和非递归打印螺旋矩阵
- 打印螺旋矩阵(递归解法)
- 打印螺旋矩阵(递归解法)
- 递归打印螺旋数字
- 汉诺塔递归方法和非递归方法
- 非递归和递归
- 矩阵求和 非递归
- Spiral Matrix 螺旋打印数组 递归
- JAVA 打印 M*N的螺旋矩阵(递归) 效率低得很
- 递归:求螺旋排列数字的矩阵
- 用递归方法和非递归方法分别打印出以下信息。1、1、2、3、5、8、13、21
- 矩阵相乘--递归与非递归实现
- 递归和非递归详解
- 归并排序(递归和非递归方法实现)
- !采用递归和非递归方法求解F(n)
- 用递归和非递归的方法 逆置单链表
- 链表合并的递归和非递归方法
- 实现一个函数,对一个正整数n,算得到1需要的最少操作次数?
- PostgreSQL TPC-H测试
- 【学习笔记】JavaScript(2013-10-06)
- POj 3041 Asteroids 最小点覆盖
- 常量折叠 Constant folding
- 递归和非递归方法打印螺旋矩阵
- 通过WifiManager,DhcpInfo获取android IP地址及网关等信息(两种方式)
- A BIG CHALLENGE
- CMPP协议发送超长短信息
- 血量条的制作
- CentOS 挂载 NTFS格式的硬盘
- sgu 422 Fast Typing 概率题DP
- java基础入门---- FileWriter1
- Android APK 签名比对