试题 算法训练 搬走要石java
时间: 2023-11-13 13:57:53 浏览: 126
好的,这是一道经典的贪心算法题目。题目描述如下:
有一排石头,每块石头有一个重量。现在需要将这些石头搬走,每次只能搬走相邻的两块石头,搬走后会得到这两块石头的重量之和的分数。现在需要你设计一个算法,使得最终得到的分数最大。
解题思路:
这是一道贪心算法题目,我们可以考虑每次选择相邻的两块石头中较重的一块进行搬走。这样可以保证每次得到的分数最大。具体实现时,我们可以使用一个数组来存储每块石头的重量,然后从左到右遍历数组,每次选择相邻的两块石头中较重的一块进行搬走,并将得分累加到总分数中。最终得到的总分数就是最优解。
Java代码实现如下:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int ans = 0;
for (int i = 0; i < n - 1; i++) {
int max = Math.max(a[i], a[i + 1]);
ans += max;
a[i + 1] = max;
}
System.out.println(ans);
}
}
```
阅读全文