Untitled
unknown
plain_text
a year ago
1.7 kB
5
Indexable
class Solution { static int[] visited; static int[] rings; static int[] prime; static int[] primeRing; static Scanner sc; static int sum = 0; public static void main(String args[]) throws Exception { sc = new Scanner(System.in); int T; int Answer; T = sc.nextInt(); for (int test_case = 1; test_case <= T; test_case++) { Answer = 0; int n = sc.nextInt(); visited = new int[n]; rings = new int[n]; prime = new int[100]; sum = 0; // input matrix for (int i = 0; i < n; i++) { rings[i] = sc.nextInt(); visited[i] = 0; } caculatePrime(); visited[0] = 1; backtrack(0, 0); System.out.println("Case #" + test_case + ": " + sum); visited = null; rings = null; } } private static void caculatePrime() { for (int i = 0; i < rings.length; i++) { for (int j = i + 1; j < rings.length; j++) { int sum = rings[i] + rings[j]; if (isPrime(sum)) { prime[sum] = 1; } } } } static boolean isPrime(int sum) { for (int i = 2; i <= Math.sqrt(sum); i++) { if (sum % i == 0) { return false; } } return true; } private static void backtrack(int node, int prev) {// i la dinh dang xet if (node == rings.length - 1) { if (prime[rings[prev] + rings[0]] == 1) { sum++; } return; } for (int i = 1; i < rings.length; i++) { if (visited[i] == 0) { if (prime[rings[prev] + rings[i]] == 1) { visited[i] = 1; backtrack(node + 1, i); visited[i] = 0; } } } } private static boolean isOK(int i) { for (int j = 0; j < rings.length; j++) { if (visited[j] == 0) { int sumRings = rings[i] + rings[j]; if (sumRings % 2 != 0) { return true; } } } return false; } }
Editor is loading...
Leave a Comment