给出一批用户,每个用户有3种选择A、B、C,但是价值不同,相临的用户不能选同一个,求出所有用户选择后总价值最大。
输入
3
30 8 4
50 20 9
11 7 6
输出
65(选8 50 7)
这一题上来有两种思路:一、先找出最有价值用户;二、先找出最有价值的列。
一、找出最有价值用户
根据用户价值需要对用户id进行排序,排序算法有很多,这里给出一种作为参考。
/**
* 排序并返回对应原始数组的下标
*
* @param input 输入
* @param desc 是否降序
* @return 对应原始数组的下标
*/
public static int[] arraySort(double[] input, boolean desc) {
double temp;
int index;
int k = input.length;
int[] Index = new int[k];
for (int i = 0; i < k; i++) {
Index[i] = i;
}
for (int i = 0; i < input.length; i++) {
for (int j = 0; j < input.length - i - 1; j++) {
if (desc) {
if (input[j] < input[j + 1]) {