旋转二维数组

 1 package test;
 2 /*
 3  *     1    2    3    4    5
 4  *    16    17    18    19    6
 5  *    15    24    25    20    7
 6  *    14    23    22    21    8
 7  *    13    12    11    10    9
 8  *
 9  *    写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。
10  * */
11 public class Test6
12 {
13     public static void main(String[] args)
14     {
15         arraynum(4);
16     }
17     // 便于改代码..输入不同y值输出不同的二维数列
18     private static void arraynum(int x)
19     {
20         int[][] arr = new int[x][x];
21         int len = arr.length, max = 0, count = 0;
22         specArr(arr, len, max, count);
23         arrprint(arr);
24     }
25     // 高级for输出打印用的
26     private static void arrprint(int[][] arr)
27     {
28         for (int[] in : arr)
29         {
30             for (int t : in)
31             {
32                 System.out.print(t + "\t");
33             }
34             System.out.println();
35         }
36     }
37     private static void specArr(int[][] arr, int len, int max, int count)
38     {
39         while (len > 0)
40         {
41             int j = 0;
42             for (int index = 0; index < (len - 1) * 4; index++)
43             {
44                 if (index < len - 1)
45                     arr[0 + count][index + count] = ++max;
46                 else if (index < 2 * (len - 1))
47                     arr[count + j++][arr.length - 1 - count] = ++max;
48                 else if (index < 3 * (len - 1))
49                     arr[arr.length - 1 - count][(j--) + count] = ++max;
50                 else if (index < 4 * (len - 1))
51                     arr[arr.length - 1 - (j++) - count][0 + count] = ++max;
52             }
53             if (len == 1)
54             {
55                 arr[arr.length / 2][arr.length / 2] = max + 1;
56             }// 注意到 当y值为奇数时,会有循环到n=1的情况,需要补进数组最中间值
57             count++;
58             len = len - 2;
59         }
60     }
61 }
时间: 2024-10-07 11:13:33

旋转二维数组的相关文章

练习-二维数组旋转

#slist = [[i for i in range(4)] for l in range(8)] # slist = [ # [4, 5, 2, 7], # [8, 7, 4, 2], # [1, 9, 7, 3], # [0, 4, 5, 6], # ] # 4*4 slist = [ [4, 5, 2, 7], [8, 7, 4, 2], [1, 9, 7, 3], [0, 4, 5, 6], [1, 9, 7, 3], ] # 4*5 # slist = [ # [1, 0, 1, 8

day4 二维数组旋转90度

二维数组的旋转其实就是数组里面的元素对调的情况:下面有一个4×4的二维数组,[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]],现在要求把二维数组转化为下列形式,[[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]].下面来看一下流程图: 流程图: 流程图如上面所示,就是进行简单的互换而已,下面我们来用代码实现行列互换: data = [[i for i in range(4)

二维数组90度旋转

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018-01-15 20:40# @Author : hhj# @Site : ## [0, 1, 2, 3, 4]# [0, 1, 2, 3, 4]# [0, 1, 2, 3, 4]# [0, 1, 2, 3, 4]# [0, 1, 2, 3, 4]# ----------------二维数组90度旋转----# [0, 0, 0, 0, 0]# [1, 1, 1, 1, 1]# [2

python 二维数组90°旋转

题目: 使用python生成一个4×4二维数组并将其顺时针旋转90° 源码如下: import random datarow=[] data=[] for i in range(4):     for j in range(4):         datarow.append(random.randint(10,80))     data.append(datarow)     datarow = [] print("data") for k in data:     print(k)

算法之二维数组旋转

现在有个二维数组:data=[0,1,2,3],[0,1,2,3],[0,1,2,3],[0,1,2,3],每一行都是[0,1,2,3],要求顺时针旋转90度,变成每一列都是[0,1,2,3]. #首先生成一维数组的语句是: row=[i for i in range(6)] print(row) #运行结果: #[0, 1, 2, 3, 4, 5] #生成二维数组的语句是: data=[[i for i in range(4)] for k in range(4)] for j in data

【Java学习笔记之八】java二维数组及其多维数组的内存应用拓展延伸

多维数组声明 数据类型[][] 数组名称; 数据类型[] 数组名称[]; 数据类型数组名称[][]; 以上三种语法在声明二维数组时的功能是等价的.同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后面,也可以在数组名称的后面,其它的依次类推. 例如: int[][] map; char c[][]; 和一维数组一样,数组声明以后在内存中没有分配具体的存储空间,也没有设定数组的长度.  -------------------------------------------------

2016/1/10 作业 1, 二维数组遍历输出求和 2,转置运算???? 3,九宫格?? 后两个存在问题

1 public class arr1 { 2 3 4 public static void main(String[] args) { 5 // 创建二维数组arr[][],输出二维数组所有元素的和. 6 7 int arr[][]={{1,3,5,7,9},{21,23,25,27,29}, 8 {12,14,16,18},{32,34,36,38}}; 9 int sum=0; 10 System.out.println("二维数组遍历"); 11 // for循环 遍历 求和

处理二维数组两题

问题一:旋转一个图像,向右旋转90度 一种思路就是将元素一个一个往右移动,准确计算出位置即可. //题目6 翻转图像 public void rotate(int [][] matrix,int n){ for(int layer=0;layer<n/2;layer++){ int start=layer; int end=n-1-layer; for(int i=start;i<end;i++){ int offset=i-start; int top=matrix[start][i]; m

leetcode&mdash;&mdash;Rotate Image(二维数组顺时针旋转90度)

题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place? 分析: 二维数组a[n][n]顺时针旋转90度,要解决这个问题,无疑,第一件事儿就是找规律. 当n=1时,不用动了. 当n=2时, 旋转之后变为 有: a[0][0] = a[1][0] a[1][0] = a[1