結果
| 問題 | No.43 野球の試合 | 
| コンテスト | |
| ユーザー |  siman | 
| 提出日時 | 2016-03-25 02:10:54 | 
| 言語 | Ruby (3.4.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 194 ms / 5,000 ms | 
| コード長 | 1,288 bytes | 
| コンパイル時間 | 155 ms | 
| コンパイル使用メモリ | 7,552 KB | 
| 実行使用メモリ | 12,800 KB | 
| 最終ジャッジ日時 | 2024-12-26 06:05:55 | 
| 合計ジャッジ時間 | 1,984 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 7 | 
コンパイルメッセージ
Syntax OK
ソースコード
class Yukicoder
  attr_accessor :matrix
  NONE = 0
  WIN = 1
  LOSE = 2
  def initialize
    @n = gets.to_i
    @matrix = Array.new(@n){ Array.new(@n, -1) }
    @answer = Float::INFINITY
    @n.times do |i|
      s = gets.chomp
      s.chars.each_with_index do |ch, j|
        case ch
        when '-'
          matrix[i][j] = NONE
        when 'o'
          matrix[i][j] = WIN
        when 'x'
          matrix[i][j] = LOSE
        end
      end
    end
    dfs(0, 0)
    puts @answer
  end
  def dfs(i, j)
    if @n-1 == i && @n-1 == j
      check
    else
      if matrix[i][j] == NONE
        matrix[i][j] = WIN
        matrix[j][i] = LOSE
        if j == @n-1
          dfs(i+1, 0)
        else
          dfs(i, j+1)
        end
        matrix[i][j] = LOSE
        matrix[j][i] = WIN
        if j == @n-1
          dfs(i+1, 0)
        else
          dfs(i, j+1)
        end
        matrix[i][j] = NONE
        matrix[j][i] = NONE
      else
        if j == @n-1
          dfs(i+1, 0)
        else
          dfs(i, j+1)
        end
      end
    end
  end
  def check
    win_count = matrix[0].count(WIN)
    rank = 1 + matrix[1..-1].map{|list|
      list.count(WIN) || 0
    }.select{|n| n > win_count}.uniq.size
    @answer = [@answer, rank].min
  end
end
Yukicoder.new
            
            
            
        