Nerde Nolzda

ZeroJudge: a016 數獨 (SUDOKU)

處理大格時,用了些較複雜的式子,使 1~9 與其對應。
When processing the 3x3 grids, some more complicated calculations are used to corresond the spaces to 1~9.

ZeroJudge Link (Zh)

#include <stdio.h>

main() {
  int arr[9][9];
  while (scanf("%d", arr) != EOF) {
    int i, j, collide = 0;
    int nums[10] = { 0 };
    for (i = 1; i < 81; i++) scanf("%d", (int*)arr+i);

    for (i = 0; i < 9; i++) {
      for (j = 0; j < 9; j++) {
        if (!nums[arr[i][j]]) nums[arr[i][j]] = 1;
        else {
          collide = 1;
          break;
        }
      }
      for (j = 0; j < 10; j++) nums[j] = 0;
    }

    for (i = 0; i < 9; i++) {
      for (j = 0; j < 9; j++) {
        if (!nums[arr[j][i]]) nums[arr[j][i]] = 1;
        else {
          collide = 1;
          break;
        }
      }
      for (j = 0; j < 10; j++) nums[j] = 0;
    }

    for (i = 0; i < 9; i++) {
      for (j = 0; j < 9; j++) {
        if (!nums[arr[i/3*3+j/3][i%3*3+j%3]]) nums[arr[i/3*3+j/3][i%3*3+j%3]] = 1;
        else {
          collide = 1;
          break;
        }
      }
      for (j = 0; j < 10; j++) nums[j] = 0;
    }

    printf("%s\n", collide? "no": "yes");
  }
  return 0;
}

Related Posts

0 comments

Post a comment

Send an email to comment@nerde.pw.