AOJ0266 Aka-beko and 40 Thieves
問題リンク Aka-beko and 40 Thieves
- 解法
DFAの遷移関数を書いて解きました。
A: 1
X: 2
Y: 3
Z: 4
W: 5
B: 6
砂漠: 0
という風に状態を置いています。
- ソース
import java.util.Scanner; //Aka-beko and 40 Thieves public class AOJ0266 { int[][] dfa = { {0, 0}, {2, 3}, {0, 4}, {2, 0}, {5, 6}, {6, 3}, {3, 2} }; void run(){ Scanner sc = new Scanner(System.in); for(;;){ char[] s = sc.next().toCharArray(); if(s[0]=='#')break; int p = 1; for(char t:s){ p = dfa[p][t-'0']; } System.out.println(p==6?"Yes":"No"); } } public static void main(String[] args) { new AOJ0266().run(); } }