编写一个程序创建一个5行5列的二维数组,并设计算法将二维数组中的数组元素按顺序赋值为1到25
一个 for循环搞定,先看截图:
代码参考如下:
import java.util.Arrays;
/**
* @author huazie
* @version 2.0.0
* @since 2.0.0
*/
public class Test {
public static void main(String arg[]){
int a[][] = new int[5][5];
int j = 0;
for (int i = 0; i < 5 * 5; i++)
{
if (i != 0 && i % 5 == 0)
{
j++;
}
a[j][i % 5] = i + 1;
}
for (int i = 0; i < 5; i++){
System.out.println(Arrays.toString(a[i]));
}
}
}
该回答引用chatgpt:
public class TwoDimensionalArray {
public static void main(String[] args) {
int[][] array = new int[5][5];
int count = 1;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
array[i][j] = count;
count++;
}
}
// 打印二维数组
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
来自chatgpt的回答
public class ArrayDemo {
public static void main(String[] args) {
int[][] arr = new int[5][5];
int count = 1;
// 外层循环遍历行
for (int i = 0; i < arr.length; i++) {
// 内层循环遍历列
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = count;
count++;
}
}
// 输出二维数组
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}
这段代码中,我们首先创建了一个5行5列的二维数组arr,并初始化一个计数器count,其初始值为1。接着,在两个嵌套的for循环中,我们遍历了二维数组中的每一个元素,并将计数器的当前值赋给它。每次赋值之后,我们将计数器加1,以便下一次循环时可以赋值给下一个元素。
最后,我们再次使用两个嵌套的for循环遍历二维数组,并使用System.out.print()方法输出每个元素的值。由于每一行的元素都有一个制表符"\t"分隔,所以在输出时每个元素都会以单独的一列显示。
运行上述代码,控制台输出如下:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
可以看到,二维数组中的元素已经按顺序赋值为1到25了。
我们不要被这道题的表面所迷惑,看到这么多文字,可能会头疼,不要着急,慢慢来理解题意分析
首先读懂题意,在上面的人需要满足什么样的条件?
读懂题意以后,我们在来继续思考,这道题,要求能叠出的最大高度,我们先对体重进行升序排序,体重相同时,按照身高的降序排序
,这个时候你想到了什么?这不就是求身高最长子序列的长度??想到子序列长度之后,肯定就是动态规划啊(当时做了很久用的01背包问题转化,但是这个最长子序列思路,最好理解),那么这道题的本质就是:求身高的最长升序子序列(可以不连续)的长度,知道是动态规划以后,我们来找它的状态转移方程
DP思路我们理清楚了,那么如何对体重进行排序?这里有两个属性呀(身高和体重)咋个办呢?(当时做这道题,我也不知道哈哈哈😂)`创建一个类,实现Comparable接口,对身高体重进行比较
补充:
话不多说,我们直接编写代码吧