Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.Scanner;
- public class Main {
- static int fact(int a) {
- int ans = 1;
- for (int i = 1; i <= a; i++) ans *= i;
- return ans;
- }
- static int[][] copyArr(int[][] arr, int n, int m) {
- int newArr[][] = new int [n][m];
- for (int i = 0;i < n; i++) {
- for (int j = 0; j < m; j++) {
- newArr[i][j] = arr[i][j];
- }
- }
- return newArr;
- }
- static int algo(int[][] arr, int w, int b, int m, int n) {
- if (w == 0 && b == 0) return 1;
- int ans = 0;
- if (w != 0) {
- for (int i = 0; i < m; i++) {
- for (int j = 0; j < n; j++) {
- int[][] copied = copyArr(arr, m, n);
- if (copied[i][j] != 'w') {
- copied[i][j] = 'w';
- ans += algo(copied, w - 1, b, m, n);
- }
- }
- }
- }
- else {
- boolean available;
- for (int i = 0; i < m; i++) {
- for (int j = 0; j < n; j++) {
- available = true;
- int[][] copied = copyArr(arr, m, n);
- for (int k = 0; k < n; k++)
- if (copied[i][k] == 'w') available = false;
- for (int k = 0; k < m; k++)
- if (copied[k][j] == 'w') available = false;
- if ((copied[i][j] == 0) && available) {
- copied[i][j] = 'b';
- ans += algo(copied, w, b - 1, m, n);
- }
- }
- }
- }
- return ans;
- }
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- int m = in.nextInt(), n = in.nextInt();
- int arr[][] = new int[m][n];
- for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) arr[i][j] = 0;
- int w = in.nextInt(), b = in.nextInt();
- System.out.println(algo(arr, w, b, m, n) / (fact(w) * fact(b)));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement