import java.util.Scanner;
public class Main {
static int n, win, fail, draw;
static int[] a = new int[100];
static int[] b = new int[100];
static int[] c = new int[100];
static boolean[] vis = new boolean[100];
// 输入
static void input() {
Scanner in = new Scanner(System.in);
n = in.nextInt();
for (int i = 0; i < n; i++) {
a[i] = in.nextInt();
}
for (int i = 0; i < n; i++) {
b[i] = in.nextInt();
}
}
// 输出
static void print() {
System.out.printf("%d %d %d\n", win, fail, draw);
}
static void debugPrint(int[] target) {
for (int i = 0; i < n; i++) {
System.out.printf("%d ", target[i]);
}
System.out.println("-----");
}
// 计算胜负
static int calc(int[] a, int[] b) {
// debugPrint(tb);
int scoreA = 0, scoreB = 0;
for (int i = 0; i < n; i++) {
if (a[i] > b[i]) {
scoreA++;
} else if (a[i] < b[i]) {
scoreB++;
}
}
if (scoreA == scoreB) {
return 0;
} else {
return scoreA > scoreB ? 1 : -1;
}
}
static void dfs(int[] target, int deep) {
if (deep == n) {
int ans = calc(a, c);
if (ans == 1 ) {
win++;
} else if (ans == -1) {
fail++;
} else {
draw++;
}
return;
}
for (int i = 0; i < n; i++) {
if (!vis[i]) {
c[deep] = target[i];
vis[i] = true;
dfs(target, deep + 1);
vis[i] = false;
// c[deep] = 0;
}
}
}
public static void main(String[] args) {
input();
dfs(b, 0);
print();
}
}
经典DFS全排列

京公网安备 11010502036488号