有个列表,里面有3,5,6,7,从第二个数开始消除,每消除一个数的得分为左右两数的乘积,最后消除到只剩两个数,乘积相加就是最后的分数
例如:2 3 4;消除3,计算24=8;最后得分8。
例如:2 3 4 5;消除3,计算24;消除4,计算35;最后得分23。
例如:3 4 5 6 7;消除4,计算35;消除5,计算46;消除6,计算57;最后得分74。
注意输入方式是;输一个数按一次回车,当输入*时,回车得出结果
我用java反正没做出来,网上也搜不到,不知道有人知道吗
类似这种消消乐的题目,可以去leetcode找找
没看懂题,到底是按顺序消除还是按输入消除,逻辑很简单,但是被输入要求整懵了
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<>();
String s;
while (true) {
s = scanner.nextLine();
if (s.equals("*")) {
//星号结束
break;
}
//list存数字
list.add(Integer.parseInt(s));
}
int sum = 0;
//从第2位开始,一直到倒数第2位
for (int i = 1; i < list.size() - 1; i++) {
sum += list.get(i - 1) * list.get(i + 1);
}
System.out.println(sum);
}
}
用数组保存,判断数组大小,建立双指针,一个指向0,一个指向0+2,循环 j(i+2)<数组的大小,大小指针同时向右移动一个指针,将结果累加
不好意思,题有点不对,我再重新写一下
有一个星星队列,每一颗星星上面都有一个分数,我们每次可以挑选一个进行消灭,每次消灭的得分等于相邻两个星星的分数乘积,总分为每次消灭星星得分之和。举个例子,星星队列为{2,4,6, 2},那么消灭4,分数为26等于12,队列为{2, 6, 2}, 消灭6,分数为22等于4,总分为16。很显然,我们不能挑选队首跟队尾,一个长度为N的队列,经过N-2轮后游戏结束,求游戏结束时可获得的最大分数值。
4
5
6
9
2
*
=89,不好意思,记忘了,大家可以再试试