用Java写数字金字塔
时间: 2023-05-20 14:03:11 浏览: 95
以下是用 Java 写数字金字塔的代码:
```
import java.util.Scanner;
public class NumberPyramid {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入数字金字塔的行数:");
int rows = input.nextInt();
int number = 1;
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= rows - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= i; k++) {
System.out.print(number + " ");
number++;
}
System.out.println();
}
}
}
```
希望能够帮到你!
相关问题
用java写数字金字塔的代码实现。要求:自塔顶可沿箭头方向移动到底层,问如何移动使得路径数字和最大?其数字和是多少?并输出相应的路径
在Java中,我们可以创建一个二维数组来表示数字金字塔,然后通过深度优先搜索(DFS)或广度优先搜索(BFS)算法找到从顶部到底部的路径,使得路径上数字之和最大。这里我将给出一个简单的DFS实现示例:
```java
import java.util.ArrayList;
import java.util.List;
public class PyramidTraversal {
private int[][] pyramid; // 数字金字塔
private int maxSum = Integer.MIN_VALUE; // 最大和
private List<int[]> path; // 最优路径
public PyramidTraversal(int[][] pyramid) {
this.pyramid = pyramid;
traversePyramid(0, 0);
}
private void traversePyramid(int row, int col) {
if (row >= pyramid.length || col < 0 || col >= pyramid[0].length || pyramid[row][col] == -1) {
return;
}
// 当前路径上的数字
int currentSum = pyramid[row][col];
// 更新最大和和最优路径
if (currentSum + maxSum > pyramid[row][col]) {
maxSum = currentSum + maxSum;
path = new ArrayList<>();
path.add(pyramid[row][col]);
} else if (currentSum == pyramid[row][col]) {
path.add(pyramid[row][col]);
}
// 探索左、右两个方向
traversePyramid(row + 1, col); // 左边
traversePyramid(row + 1, col + 1); // 右边
}
public int getMaxSum() {
return maxSum;
}
public List<Integer> getPath() {
return path.stream().mapToInt(Integer::intValue).boxed().toList();
}
// 示例金字塔构造函数
public static PyramidTraversal createPyramid(int height, int startNum) {
int[][] pyramid = new int[height][];
for (int i = 0; i < height; i++) {
pyramid[i] = new int[i + 1];
pyramid[i][i] = startNum * Math.pow(2, height - i - 1);
pyramid[i][0] = pyramid[i][i]; // 底部元素也是顶层元素
}
return new PyramidTraversal(pyramid);
}
public static void main(String[] args) {
int pyramidHeight = 4;
int startNum = 1;
PyramidTraversal traversal = createPyramid(pyramidHeight, startNum);
System.out.println("最大和: " + traversal.getMaxSum());
System.out.println("路径: " + traversal.getPath());
}
}
```
在这个例子中,`createPyramid`函数用于生成一个金字塔,每个位置的数字是初始数乘以2的降幂次方。`traversePyramid`函数递归地探索每一层,找到从顶端到底部的最大和路径。
运行此代码,你会得到最大和和对应的路径。如果需要其他帮助或有其他疑问,请告诉我。
JAVA打印数字金字塔
在Java中,打印数字金字塔通常是用于教学或演示编程基础结构的一种简单示例。这种金字塔通常由递增的数字(如1到n)组成,每个层级的数字数量比上一层级多一个,形状类似倒置的三角形。下面是一个简单的例子,展示如何打印出5层的数字金字塔:
```java
public class Pyramid {
public static void main(String[] args) {
int n = 5;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= i; k++) {
System.out.print(k + " ");
}
System.out.println(); // 换行
}
}
}
```
当你运行上述代码时,将输出类似这样的结果:
```
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
```
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)