結果
問題 | No.43 野球の試合 |
ユーザー |
|
提出日時 | 2014-12-01 15:35:24 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 200 ms / 5,000 ms |
コード長 | 2,069 bytes |
コンパイル時間 | 3,655 ms |
コンパイル使用メモリ | 77,724 KB |
実行使用メモリ | 43,196 KB |
最終ジャッジ日時 | 2024-06-11 07:32:46 |
合計ジャッジ時間 | 5,934 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 7 |
ソースコード
import java.util.Arrays;import java.util.Scanner;public class Main43 {public static void main(String[] args) {Main43 p = new Main43();}public Main43() {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][] isWon = new int[n][n];for(int i=0;i<isWon.length;i++){String s = sc.next();for(int j=0;j<isWon[i].length;j++){if(s.charAt(j)=='o')isWon[i][j] = 1;else if(s.charAt(j)=='x')isWon[i][j] = -1;else if(s.charAt(j) == '#')isWon[i][j] = -1;}}solve(isWon);}public void solve(int[][] isWon) {// for(int i=1;i<isWon[0].length;i++){// if(isWon[0][i] == 0){// isWon[0][i] = 1;// isWon[i][0] = -1;// }// }System.out.println(rec(isWon, 0, 0));}private int rec(int[][] isWon, int cur1, int cur2){// System.out.println(cur1 + " " + cur2 );if(cur1==isWon.length)return calcRank(isWon);int res = Integer.MAX_VALUE;int ncur1 = 0;int ncur2 = 0;if(cur2+1 < isWon.length){ncur1 = cur1;ncur2 = cur2+1;}else{ncur1 = cur1+1;ncur2 = ncur1;}if(isWon[cur1][cur2] == 0){isWon[cur1][cur2] = 1;isWon[cur2][cur1] = -1;res = Math.min(res, rec(isWon, ncur1, ncur2));isWon[cur1][cur2] = -1;isWon[cur2][cur1] = 1;res = Math.min(res, rec(isWon, ncur1, ncur2));isWon[cur1][cur2] = 0;isWon[cur2][cur1] = 0;}else{res = Math.min(res, rec(isWon, ncur1, ncur2));}return res;}private int calcRank(int[][] isWon){int[] w = new int[isWon.length];for(int i=0;i<isWon.length;i++){for(int j=0;j<isWon[i].length;j++){if(isWon[i][j]==1)w[i]++;}}int playerWin = w[0];Arrays.sort(w);int last = w[w.length-1];int rank = 1;int res = -1;for(int i=w.length-1;i>=0;i--){if(last != w[i]){rank++;last = w[i];}if(w[i] == playerWin){res = rank;break;}}return res;}}