当前位置: 首页 > news >正文

JAVA编程题-求矩阵螺旋值

螺旋类

package entity;
/*** 打印数组螺旋值类*/
public class Spiral {
//	数组行private int row;
//	数组列private int col;
//	行列数private int size;
//	当前行索引private int rowIndex;
//	当前列索引private int colIndex;
//	行开始索引private int rowStart;
//	行结束索引private int rowEnd;
//	列开始索引private int colStart;
//	列结束索引private int colEnd;
//	数组private int[][] spiralArray;
//	保存数组private int[][] saveArray;
//	构造方法public Spiral(int row,int col,int[][] spiralArray) {this.row = row;this.col = col;this.rowStart = 0;this.rowEnd = row - 1;this.colStart = 0;this.colEnd = col - 1;this.size = row*col;this.spiralArray = spiralArray;this.saveArray = new int[row][col];for(int[] r : this.saveArray) {for(int i=0;i<r.length;i++) {r[i] = Integer.MIN_VALUE;}}}
//	打印螺旋值public void printSpiral() {
//		行列1时打印螺旋值if(this.row==1||this.col==1) {printArray();return;}while(size-->0) {printData();saveData();setRange();if(this.rowIndex==this.rowStart&&this.colIndex<this.colEnd) {toRight();}else if(this.rowIndex<this.rowEnd&&this.colIndex==this.colEnd) {toDown();}else if(this.rowIndex==this.rowEnd&&this.colIndex>this.colStart) {toLeft();}else if(this.rowIndex>this.rowStart&&this.colIndex==this.colStart) {toUp();}}}
//	设置行列开始结束值private void setRange() {
//		开始结束值的界分int rowDivide = this.row/2;int colDivide = this.col/2;
//		判断一行每个元素是否都走完for(int i=0;i<this.row;i++) {int colCount = 0;int[] r = this.saveArray[i];for(int j=0;j<this.col;j++) {int c = r[j];if(c!=Integer.MIN_VALUE) {++colCount;}}if(colCount==this.col) {if(i+1<rowDivide) this.rowStart = i + 1;if(i-1>=rowDivide) this.rowEnd = i - 1;}}
//		判断列元素是否走完for(int i=0;i<this.col;i++) {int rowCount = 0;for(int j=0;j<this.row;j++) {int data = this.saveArray[j][i];if(data!=Integer.MIN_VALUE) {++rowCount;}}if(rowCount==this.row) {if(i+1<colDivide) this.colStart = i + 1;if(i-1>=colDivide) this.colEnd = i - 1;}}}//	打印数组private void printArray() {for(int[] arr : this.spiralArray) {for(int data : arr) {System.out.print(data);}}}
//	打印元素private void printData() {System.out.print(this.spiralArray[this.rowIndex][this.colIndex]);}
//	向上移动private void toUp() {this.rowIndex = (this.rowIndex-1)>=0?--this.rowIndex:0;}
//	向下移动private void toDown() {this.rowIndex = (this.rowIndex+1)<this.row?++this.rowIndex:this.row-1;}
//	向左移动private void toLeft() {this.colIndex = (this.colIndex-1)>=0?--this.colIndex:0;}
//	向右移动private void toRight() {this.colIndex = (this.colIndex+1)<this.col?++this.colIndex:this.col-1;}
//	保存已经过数据private void saveData() {this.saveArray[this.rowIndex][this.colIndex] = this.spiralArray[this.rowIndex][this.colIndex];}
}

测试类

package test;import java.util.Arrays;import entity.Spiral;public class SpiralTest {public static void main(String[] args) {
//		int row = 1;
//		int col = 1;
//		int[][] array = {{1}};
//		int row = 1;
//		int col = 2;
//		int[][] array = {{1,2}};
//		int row = 2;
//		int col = 1;
//		int[][] array = {{1},{2}};int row = 4;int col = 5;int[][] array = new int[row][col];for(int[] r : array) {for(int i=0;i<r.length;i++) {r[i] = (int)(Math.random()*100);}}System.out.println(Arrays.deepToString(array));Spiral sp = new Spiral(row,col,array);sp.printSpiral();}}

http://www.lryc.cn/news/185014.html

相关文章:

  • Python--入门
  • STM32复习笔记(二):GPIO
  • POJ 3264 Balanced Lineup 线段树 / 平方分割
  • element-plus自动引入组件报错,例如collapse、loading
  • ChainForge:衡量Prompt性能和模型稳健性的GUI工具包
  • 队列--二叉树层序遍历
  • Ceph入门到精通-Linux内核网络参数优化小结
  • AWK语言第二版 2.6个人库 2.7小结
  • 8年经验之谈 —— Web ui自动化测试框架总结!
  • Kafka在企业级应用中的实践
  • 使用企业订货系统后的效果|软件定制开发|APP小程序搭建
  • STL关联式容器set,multiset,pair,map
  • MFC文本输出学习
  • Python 数据分析与挖掘(一)
  • 【问题证明】矩阵方程化为特征值方程求得的特征值为什么是全部特征值?不会丢解吗?
  • 虹科干货 | 不是吧,Redis Enterprise也能当向量数据库来用?
  • 汽车驾驶 - 四梁六柱是什么
  • CI522 13.56MHZ电动车NFC测试资料
  • 【微信小程序开发】一文学会使用CSS样式布局与美化
  • 漏刻有时物联网环境态势感知大数据(设备列表、动态折线图)
  • 【力扣】单调栈:901. 股票价格跨度
  • 4_使用预训练模型 微调训练CIFAR10
  • 机器学习笔记(一)
  • 学习在原地打转的原因与解决 如何步步为营 一日千里快速进步 考研工程计算 1万小时=416.666666667 天
  • 194、SpringBoot --- 下载和安装 Erlang 、 RabbitMQ
  • 机器学习7:pytorch的逻辑回归
  • Java应用程序中如何实现FTP功能 | 代码示例和教程
  • kotlin:list的for循环
  • asp.net电影院选座系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
  • CSS鼠标指针表