回形数字矩阵(Java)
来源:互联网 发布:常德seo 编辑:程序博客网 时间:2024/05/01 10:13
问题
解决思想(递归)
将矩阵从里到外分为多层,每一层都是一个口字型数字序列,方向都是顺时针,由此我们可以将问题分解为相同的子问题,采用递归算法源代码
import java.util.Scanner;/** * * @author Vinsmoke * * * 打印回形矩阵 * * */public class Pattern { static int n; static int sum; //矩阵数字总个数 static int flag = 1; static int[][] pattern; /* * 打印图案功能,其中n为图案矩阵的行列数 */ static void printPattern(int layer) { // 上:赋值 for (int i = layer; i < n - layer - 1; i++) { pattern[layer][i] = flag++; if (flag > sum) return; } // 右:赋值 for (int i = layer; i < n - layer - 1; i++) { pattern[i][n - layer - 1] = flag++; if (flag > sum) return; } // 下:赋值 for (int i = n - layer - 1; i > layer; i--) { pattern[n - layer - 1][i] = flag++; if (flag > sum) return; } // 左:赋值 for (int i = n - layer - 1; i > layer; i--) { pattern[i][layer] = flag++; if (flag > sum) return; } printPattern(++layer); } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入矩阵的行列数:"); Scanner scan = new Scanner(System.in); n = scan.nextInt(); pattern = new int[n][n]; //预处理奇偶数的不同 if(n%2==0) sum=n*n; else{ sum=n*n-1; pattern[(n-1)/2][(n-1)/2]=n*n; } printPattern(0); //递归 // 输出图案 for (int[] row : pattern) { for (int column : row) { System.out.print(column + "\t"); } System.out.println(); } }}
阅读全文
0 0
- 回形数字矩阵(Java)
- java 回形数存储
- 打印陀螺形数字
- 回形数组
- 输出回形数组
- 逆序输出回形数组
- 回形数组的输出
- 守形数(简单模拟)
- 守形数(解题报告)
- 斜形数组排序(C语言)
- noip2009 靶形数独 (搜索)
- 靶形数独 (codevs 1174)题解
- FZU 2231 平行四边形数(计算几何)
- P1074 靶形数独(TLE 75)
- FZU 2231 平行四边形数 (组合计数)
- NOIP2009靶形数独(DFS)
- 靶形数独(dfs+剪枝)
- P1074 靶形数独(搜索+剪枝)
- angular date
- 在使用php-resque队列时使用到PHP进程的相关内容总结
- JcJc人工智能错别字校对系统API(网站错别字检查)
- Ubuntu_shell命令
- 小兔Java教程
- 回形数字矩阵(Java)
- util.Date类型数据插入mysql数据库时,日期总会少一天,16个小时
- Linux:CentOS7安装SVN
- python3 reshape 小技巧
- 设计模式(六)——原型模式
- 《剑指offer》刷题笔记(时间效率):整数中1出现的次数
- ubuntu中FastDFS+Nginx环境搭建
- gradle的手动配置
- UI网站