Untitled
unknown
plain_text
2 years ago
1.5 kB
9
Indexable
import java.util.Scanner;
public class Solution {
static int n, B[], max, sum, visit[];
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
n = sc.nextInt();
B = new int[n];
for (int i = 0; i < n; i++) {
B[i] = sc.nextInt();
}
visit = new int[n];
sum = 0;
max = 0;
shot(0);
System.out.println("Case #" + tc);
System.out.println(max);
}
sc.close();
}
private static void shot(int k) {
// TODO Auto-generated method stub
if (k == n) {
max = sum > max ? sum : max;
return;
}
for (int i = 0; i < n; i++) {
if (visit[i] == 0) {
visit[i] = 1;
int tmp = sum;
int l = getLeft(i);
int r = getRight(i);
if (l >= 0 && r >= 0) {
sum += B[i - l] * B[r + i];
}
if (l < 0 && 0 <= r && r < n) {
sum += B[r + i];
} else if (r < 0 && l >= 0 && l < n) {
sum += B[i - l];
} else if (r < 0 && l < 0) {
sum += B[i];
}
shot(k + 1);
sum = tmp;
visit[i] = 0;
}
}
}
private static int getRight(int s) {
// TODO Auto-generated method stub
for (int i = s; i < n; i++) {
if (visit[i] == 0)
return i - s;
}
return -1;
}
private static int getLeft(int s) {
// TODO Auto-generated method stub
for (int i = s; i >= 0; i--) {
if (visit[i] == 0)
return s - i;
}
return -1;
}
}
Editor is loading...
Leave a Comment