Untitled
unknown
plain_text
2 years ago
1.7 kB
3
Indexable
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class Solution { static int n, B[], max, sum, visit[]; public static void main(String[] args) throws FileNotFoundException { // TODO Auto-generated method stub System.setIn(new FileInputStream("src/input.txt")); 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