java 算法题 急!
发布网友
发布时间:2022-05-16 01:49
我来回答
共5个回答
热心网友
时间:2023-10-08 21:17
private static void printArray(int n) {
int[][] a = new int[n][n];
int row = 0;
int col = 0;
int tempRow = 0;
int tempCol = 0;
boolean isButtom = false;
for (int i = 1; i <= n * n; i++) {
a[row][col] = i;
//类似贪吃蛇,但他只沿最外边走。
//如果不在无数据的矩阵的底部,则尝试的第一个方向为上
if (!isButtom) {
tempRow = row - 1;
if (tempRow >= 0 && a[tempRow][col] == 0) {
row = tempRow;
continue;
}
}
//尝试向右
tempCol = col + 1;
if (tempCol < n && a[row][tempCol] == 0) {
col = tempCol;
isButtom = false;
continue;
}
//尝试向下
tempRow = row + 1;
if (tempRow < n && a[tempRow][col] == 0) {
row = tempRow;
isButtom = false;
continue;
}
//尝试向左
tempCol = col - 1;
if (tempCol >= 0 && a[row][tempCol] == 0) {
col = tempCol;
isButtom = true;
continue;
}
//尝试向上
tempRow = row - 1;
if (tempRow >= 0 && a[tempRow][col] == 0) {
row = tempRow;
isButtom = false;
continue;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
}
热心网友
时间:2023-10-08 21:17
class ArrayPrint {
private int N;
private int array[][];
public ArrayPrint() {
N = 5;
array = new int[N][N];
}
public ArrayPrint(int n) {
N = n;
array = new int[N][N];
}
public void print() {
int i = 0, j = 0, i0 = 0, j0 = 0, count = 10, Num = N-1;
while(Num > 0) {
for(i=i0, j=j0;j<Num; j++,count++) {
array[i][j] = count;
}
for(i=i0; i<Num; i++,count++) {
array[i][j] = count;
}
for(j=Num; j>j0; j--,count++) {
array[i][j] = count;
}
for(i=Num; i>i0; i--,count++) {
array[i][j] = count;
}
i0++;
j0++;
Num--;
}
if(N%2 != 0) { //这里是判断当为奇数矩阵时,输出矩阵中间的值
array[N/2][N/2] = count;
}
for(i=0; i<N; i++) {
for(j=0; j<N; j++) {
String ar = "0";
if(array[i][j]/10 < 1) { //判断当为1位数时,空两格输出
ar = " " + array[i][j];
}
else if(array[i][j]/100 < 1 && array[i][j]/10 >= 1) { //判断当为两位数时,空一格输出
ar = " " + array[i][j];
}
System.out.print(ar + " ");
}
System.out.println();
}
}
public static void main(String args[]) throws Exception {
int order = 0;
System.out.println("Please enter the order of the square(<10)");
order = System.in.read();
order = order - '0';
ArrayPrint myArray = new ArrayPrint(order);
myArray.print();
}
}
这个程序就是,不过输入的n值不能大于10,想要10以上的,楼主可以自己改,很简单的。
其中count是输出的值,这个程序是从10开始的,如果楼主想要从1开始,把count的初值改为1即可。
满意请采纳,如有疑问,请继续追问!!
热心网友
时间:2023-10-08 21:18
while (true) {
try {
System.out.println("请输入一个正整数:");
Scanner input = new Scanner(System.in);//接受输入
int n= Integer.valueOf(input.next());
int[][] array = new int[n][n];
int row = 0, col = 0;//row行,col列
for (int i = 1; i <= n* n; i++) {//转换成二位数组,保存
array[row][col] = i;
col++;//控制列
if (inpt == col) {//控制行
row++;
col = 0;
}
}
for (int i = 0; i < n; i++) {//输出
for (int j = 0; j < n; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
break;
} catch (Exception e) {
System.out.println("你输入的不是数字,请输入数字");
}
}
看大家都写的好多,看的有点眼花
热心网友
时间:2023-10-08 21:18
我去。。看错了。。。还是看上楼答案吧
热心网友
时间:2023-10-08 21:19
这么简单的规则都看不出么?追问简单 你不能写出来?