| 114 | } |
| 115 | |
| 116 | private static boolean search1(int ep, int eo, int d, int lf) { |
| 117 | if (d == 0) return eo == 0 && epd[ep] == 0 && init2(); |
| 118 | if (epd[ep] > d || eod[eo] > d) return false; |
| 119 | for (int i = 0; i < 3; i++) { |
| 120 | if (i != lf) { |
| 121 | int y = eo, s = ep; |
| 122 | for (int j = 0; j < 3; j++) { |
| 123 | y = eom[y][i]; s = epm[s][i]; |
| 124 | sol[d] = i * 3 + j; |
| 125 | if (search1(s, y, d - 1, i)) { |
| 126 | //sb.insert(0, turn1[i]+suff[j]+" "); |
| 127 | return true; |
| 128 | } |
| 129 | } |
| 130 | } |
| 131 | } |
| 132 | return false; |
| 133 | } |
| 134 | |
| 135 | private static boolean init2() { |
| 136 | int epx = ep, cpx = cp; |