「java回旋数组」Java返回数组
本篇文章给大家谈谈java回旋数组,以及Java返回数组对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、在这段java代码--俄罗斯方块,方块是怎么旋转的?
- 2、螺旋数组的意思和规律
- 3、关于回旋矩阵的几点思考 (数组
- 4、java,编程实现输入一个数字,输出该数字的回旋数字
- 5、如何使一个三行三列的数组顺时针旋转90度,使用java语言!非常感谢啊
- 6、java俄罗斯方块旋转算法,求解
在这段java代码--俄罗斯方块,方块是怎么旋转的?
贴出来的代码还不够,不过已经基本能回答你的问题了
我的推理过程:从(turnstate+1)%4可以看出,turnstate是一个数字,取值只有0123,因此它仅仅是一个标识符,0123四种取值分别标记着这个方块处于原状,旋转90度,180度或者270度。然后blow函数应该是一个判断旋转之后会不会出现和已有方块重叠的函数。
因此,这个turn函数的功能是:把标识符变成下一个状态,然后判断如果旋转,会不会和已有的方块重叠,如果重叠,就取消这个旋转标记的改变。
因此,答案就很明显了:真正实现旋转方块的操作并不在这里,或者说,你再仔细研究一下这个程序的代码,它可能实际上根本没有旋转过那个方块,只是用turnstate这个数字标记方块旋转了多少度,判断重叠以及绘制的时候才真正计算或者从表里直接读取旋转后状态而已。
螺旋数组的意思和规律
1 2 3 4 5
16 17 18 19 6
15 24 33 20 7
14 23 22 21 8
13 12 11 10 9
这是5阶的螺旋数组,也叫回旋数,代码如下
public class HuiXuanShu {
public static void main(String[] args) {
int[][] a;
HuiXuanShu hxs = new HuiXuanShu();
a = hxs.huixuan(5);
for (int i = 0; i a.length; i++) {
for (int j = 0; j a.length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
public int[][] huixuan(int n) {
if (n == 1) {
return new int[][]{{1}};
}
if(n == 2){
return new int[][]{{1,2},{4,3}};
}
int[][] result = new int[n][n];
for (int i = 0; i n; i++) {
result[0][i] = i + 1;
}
for (int i = 0; i n; i++) {
result[i][n - 1] = n + i;
}
for (int i = n - 1; i = 0; i--) {
result[n - 1][i] = 3 * n - 2 - i;
}
for (int i = n - 1; i 0; i--) {
result[i][0] = 4 * n - 3 - i;
}
int aaa = 4 * n - 4;
int[][] result1 = huixuan(n - 2);
for (int i = 0; i n - 2; i++) {
for (int j = 0; j n - 2; j++) {
result[i + 1][j + 1] = result1[i][j] + aaa;
}
}
return result;
}
}
关于回旋矩阵的几点思考 (数组
你先把矩阵拆开一行一行的来思考, 行输出,是一个循环,再在该循环外面写一个列循环.
然后再思考行下标循环分2种
把上面的数据放在一个数组里
for (int i = 0; i arr.length; i ++) { // 列输出
for (int j = i ; j arr,length ; j ++) { //行输出
System.out.print(arr[i]); //按顺序输出行的前一部分
}
for (int k = 0; k i; k ++) {
System.out.print(arr[i]);//按顺序输出行的后一部分
}
System.out.println();
}
java,编程实现输入一个数字,输出该数字的回旋数字
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class HuiXuan {
static Integer[][] a;
static int len = 0;
static int start = 1;
/**
* @param args
*/
public static void main(String[] args) {
String str = null;
int num = 0;
Scanner scan = new Scanner(System.in);
System.out.println("请输入数字:");
str = scan.nextLine();
num = transferStr2Int(str);
while(num = 0){
str = scan.nextLine();
num = transferStr2Int(str);
}
init(num);
print(num);
}
public static int transferStr2Int(String str){
int num = 0;
try{
if(null == str || str.equals("")){
System.out.println("请输入数字");
return -1;
}
num = Integer.parseInt(str);
if(num = 0){
System.out.println("请输入数字");
}
return num;
}catch(Exception e){
System.out.println("请输入数字");
return -1;
}
}
public static void print(int n) {
for (int i = 0; i n; i++) {
for (int j = 0; j n; j++) {
if (a[i][j] != null a[i][j] 10) {
System.out.print(" " + a[i][j]);
} else {
System.out.print(" " + a[i][j]);
}
}
System.out.println();
}
}
public static void init(int n){
if (a == null) {
a = new Integer[n][n];
}
ListInteger arrs = new ArrayListInteger();
int length = (n - 1) * 4;
for (int i = 0; i length; i++) {
arrs.add(start + i);
}
if (n == 1) {
int t = (int) Math.sqrt(start);
t = (t - 1) / 2;
a[t][t] = start;
}
for (int i = 0; i n - 1; i++) {
a[len][i + len] = arrs.get(i);
if (i == 0) {
a[len][n - 1 + len] = arrs.get(i + n - 1);
a[n - 1 + len][n - 1 + len] = arrs.get(i + (n - 1) * 2);
a[n - 1 + len][len] = arrs.get(i + (n - 1) * 3);
} else {
a[i + len][n - 1 + len] = arrs.get(i + n - 1);
a[n - 1 + len][n - 1 - i + len] = arrs.get(i + (n - 1) * 2);
a[n - 1 - i + len][len] = arrs.get(i + (n - 1) * 3);
}
}
if (n - 2 0) {
start = arrs.get(arrs.size() - 1) + 1;
len++;
init(n - 2);
}
}
}
如何使一个三行三列的数组顺时针旋转90度,使用java语言!非常感谢啊
public static void main(String[] args)
{
int[][] numbers={
{1,2,3},
{4,5,6},
{7,8,9}
};
int[][] newnum=new int[3][3];
for(int i=0;i3;i++){
for(int j=0;j3;j++){
newnum[i][j]=numbers[2-j][i];
System.out.println(newnum[i][j]);
}
}
}
java俄罗斯方块旋转算法,求解
可以给每一个小方块设置为一个坐标,变为一个三阶行列式,3*3矩阵,转变为二元数组旋转。观察一下左旋:
11 12 13 31 21 11
21 22 23 →→ 32 22 12
31 32 33 33 23 13
坐标变换如下:(1,1)变为(1,3),(1,2)变为(2,3),(1,3)变为(3,3)
(2,1)变为(1,2),(2,2)变为(2,2),(2,3)变为(3,2)
(3,1)变为(1,1),(3,2)变为(2,1),(3,3)变为(3,1)
规律就是(i,j)变为(j,3-i+1):
如果是2*2的方格,就可以变为二阶行列式,也就是2*2的二元数组,这里给出3*3九宫格改变的示意,我的代码如下:
import java.util.Random;
public class T{
public static void main(String[] args){
int[][] a=new int[3][3];
System.out.println("now begin to form a new integer array");
Random r=new Random();
for(int i=0;i3;i++){
for(int j=0;j3;j++){
a[i][j]=r.nextInt(10);
}
}
System.out.println("the array is shown as follows:");
for(int i=0;i3;i++){
for(int j=0;j3;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println("左转九十度");
for(int i=0;ia.length;i++){
for(int j=0;ja[i].length;j++){
System.out.print(a[a[i].length-1-j][i]+" ");
}
System.out.println();
}
}
}
java回旋数组的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java返回数组、java回旋数组的信息别忘了在本站进行查找喔。
发布于:2022-11-23,除非注明,否则均为
原创文章,转载请注明出处。