package xj;
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner;
public class DaQiqiu { static int T, N, maxsum; static int data[]; static int num[]; static boolean used[];
public static void main(String[] args) throws FileNotFoundException { /* Scanner sc=new Scanner(System.in); */ Scanner sc = new Scanner(new File("src/DaQiqiu")); T = sc.nextInt(); for (int t = 0; t < T; t++) { N = sc.nextInt(); data = new int[N]; used = new boolean[N]; num=new int[N]; for (int i = 0; i < N; i++) { data[i] = sc.nextInt(); } maxsum = 0; dfs(0,0);
/* * for (int i = 0; i < N; i++) { System.out.print(" "+data[i]); } */
System.out.println(maxsum); } }
private static void dfs(int step, int sum) { if (step == N) { if (maxsum < sum) { maxsum = sum; } return; } for (int i = 0; i < N; i++) { if (!used[i]) { int l = -1; int r = -1; int t = sum; // you for (int j = i + 1; j < N; j++) {//这里一开始弄混淆了i和step if (!used[j]) { r = j; break; } } // zuo for (int j = i - 1; j >= 0; j--) { if (!used[j]) { l = j; break; } } // if (l == -1 && r != -1) { sum += data[r]; } // if (l != -1 && r == -1) { sum += data[l]; } // if (l != -1 && r != -1) { sum += data[l] * data[r]; } // if (l == -1 && r == -1) { sum += data[i]; } used[i] = true; dfs(step + 1, sum); used[i] = false; sum = t; } } } }
//input
7 5 3 10 1 2 5 7 12 48 28 21 67 75 85 6 2 3 4 6 7 1 4 1 2 3 4 10 1 2 1 4 5 6 7 8 9 10 5 1 2 3 4 5 3 2 8 3
//output
100 16057 84 20 360 40 24