源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java编程实现打印螺旋矩阵实例代码

  • 时间:2021-07-27 09:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java编程实现打印螺旋矩阵实例代码
直接上代码吧。 昨晚腾讯在线测试遇到的题。 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。 [img]http://files.jb51.net/file_images/article/201712/20171213162922120.gif?20171113162935[/img]
import java.util.Scanner;
public class mysnakematrix {
 private int n;
 //
 private int a[][];
 // 声明一个矩阵
 private int value = 1;
 // 矩阵里数字的值
 public mysnakematrix(int i) {
  this.n = i;
  a = new int[n][n];
 }
 // 计算第m层左上角的数字
 private int getcorner(int m) {
  int corner = 1;
  int o = n - 1;
  for (int i = 0; i < m - 1; ++i) {
   corner += 4 * o;
   o = o - 2;
  }
  return corner;
 }
 // 生成矩阵的每一层的每一边的数
 // s表示4个方向,分别取值1,2,3,4,表示4个不同的方向。
 // o表示这条边的起始值。
 // x表示第m层每条边的数字个数
 private void side(int s, int o, int x, int m) {
  int i = 0;
  int j = 0;
  switch (s) {
   case 1:
         i = m - 1;
   j = m - 1;
   for (int k = 0; k < x; ++k) {
    a[i][j + k] = value;
    ++value;
   }
   break;
   case 2:
         i = m - 1;
   j = m - 1 + x;
   for (int k = 0; k < x; ++k) {
    a[i + k][j] = value;
    ++value;
   }
   break;
   case 3:
         i = m - 1 + x;
   j = m - 1 + x;
   for (int k = 0; k < x; ++k) {
    a[i][j - k] = value;
    ++value;
   }
   break;
   case 4:
         i = m - 1 + x;
   j = m - 1;
   for (int k = 0; k < x; ++k) {
    a[i - k][j] = value;
    ++value;
   }
   break;
  }
 }
 // 生成蛇形矩阵的第m层
 private void shell(int m)// m表示第m层
 {
  int x = n - 1 - (m - 1) * 2;
  // x表示第m层每条边的数字个数
  int o = getcorner(m);
  int o1 = o;
  int o2 = o1 + x;
  int o3 = o2 + x;
  int o4 = o3 + x;
  // System.out.println(o4);
  side(1, o, x, m);
  side(2, o, x, m);
  side(3, o, x, m);
  side(4, o, x, m);
 }
 // 生成蛇形矩阵
 public void snakeMatrix() {
  int m = (n + 1) / 2;
  // 计算一共有多少层
  for (int i = 1; i <= m; ++i) {
   shell(i);
  }
  if (n % 2 == 1) {
   a[n / 2][n / 2] = n * n;
  }
 }
 // 打印矩阵
 public void print() {
  for (int i = 0; i < n; ++i) {
   for (int j = 0; j < n; ++j) {
    if (a[i][j] < 10) {
     System.out.print(a[i][j] + " ");
    } else {
     System.out.print(a[i][j] + " ");
    }
   }
   System.out.println();
  }
 }
 public static void main(String args[]) {
  mysnakematrix my = new mysnakematrix(new Scanner(System.in).nextint());
  //利用Scanner获取控制台输入
  my.snakeMatrix();
  my.print();
 }
}
[b]总结[/b] 以上就是本文关于Java编程实现打印螺旋矩阵实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站: [url=http://www.1sucai.cn/article/129365.htm][b]Java语言描述存储结构与邻接矩阵代码示例[/b][/url] [url=http://www.1sucai.cn/article/129058.htm][b]Java编程实现邻接矩阵表示稠密图代码示例[/b][/url] [url=http://www.1sucai.cn/article/129284.htm][b]Java编程实现A*算法完整代码[/b][/url] 如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部