dengxinyi 6 年 前
コミット
b33eaba9a4
1 ファイル変更21 行追加16 行削除
  1. 21 16
      poj/1077.eight/main.cc

+ 21 - 16
poj/1077.eight/main.cc

@@ -1,5 +1,6 @@
 #include <cstdio>
 #include <cstdlib>
+#include <cstring>
 #include <queue>
 
 using std::priority_queue;
@@ -77,7 +78,7 @@ int next_state(int p, char m) {
 bool even_perm(int s) {
   char perm[10];
   sprintf(perm, "%09d", s);
-  int cnt = 0; // 0 is not included
+  int cnt = 0;  // 0 is not included
   for (int i = 1; i < 9; i++) {
     if (perm[i] == '0') continue;
     for (int j = 0; j < i; j++)
@@ -141,21 +142,25 @@ bool a_star(int s) {
 
 int main() {
   char perm[10];
-  for (int i = 0; i < 9; i++) {
-    scanf("%s", &perm[i]);
-    if (perm[i] == 'x') perm[i] = '0';
-  }
-  int src = atoi(perm);
-  if (a_star(src)) {
-    int pos = perm2no(dst), i = 0;
-    do {
-      res[i++] = close[pos].m;
-      pos = perm2no(close[pos].p);
-    } while (pos != -1);  // The (i-1)th char is 0! So i - 2
-    for (int j = i - 2; 0 <= j; j--) printf("%c", res[j]);
-    printf("\n");
-  } else {
-    printf("unsolvable\n");
+  while (scanf("%s", &perm[0]) != EOF) {
+    if (perm[0] == 'x') perm[0] = '0';
+    for (int i = 1; i < 9; i++) {
+      scanf("%s", &perm[i]);
+      if (perm[i] == 'x') perm[i] = '0';
+    }
+    memset(close, 0, sizeof(close));
+    int src = atoi(perm);
+    if (a_star(src)) {
+      int pos = perm2no(dst), i = 0;
+      do {
+        res[i++] = close[pos].m;
+        pos = perm2no(close[pos].p);
+      } while (pos != -1);  // The (i-1)th char is 0! So i - 2
+      for (int j = i - 2; 0 <= j; j--) printf("%c", res[j]);
+      printf("\n");
+    } else {
+      printf("unsolvable\n");
+    }
   }
   return 0;
 }