codeforces D. Anti-Sudoku

codeforces D. Anti-Sudoku_第1张图片

题目

题意:

将数独中的数字修改九个,然后使得数独每行每列每个九宫格都会出现重复的。

思路:

我是将不同行不同列不同九宫格的数字进行% 9 + 1 9+1 9+1,这样就会重复了,题解直接把 2 2 2数字改成了 1 1 1,会更简单。
我修改的图:

100000000
000100000
000000100
010000000
000010000
000000010
001000000
000001000
000000001

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
typedef vector<int> veci;
typedef vector<ll> vecl;
typedef pair<int, int> pii;
template <class T>
inline void read(T &ret) {
    char c;
    int sgn;
    if (c = getchar(), c == EOF) return ;
    while (c != '-' && (c < '0' || c > '9')) c = getchar();
    sgn = (c == '-') ? -1:1;
    ret = (c == '-') ? 0:(c - '0');
    while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
    ret *= sgn;
    return ;
}
inline void out(int x) {
    if (x > 9) out(x / 10);
    putchar(x % 10 + '0');
}
int main() {
    int t, x;
    read(t);
    while (t--) {
        int a[20][20];
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9; j++) {
                scanf("%1d", &a[i][j]);
            }
        }
        a[1][1] = a[1][1] % 9 + 1;
        a[2][4] = a[2][4] % 9 + 1;
        a[3][7] = a[3][7] % 9 + 1;
        a[4][2] = a[4][2] % 9 + 1;
        a[5][5] = a[5][5] % 9 + 1;
        a[6][8] = a[6][8] % 9 + 1;
        a[7][3] = a[7][3] % 9 + 1;
        a[8][6] = a[8][6] % 9 + 1;
        a[9][9] = a[9][9] % 9 + 1;
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9; j++) {
                printf("%d", a[i][j]);
            }
            printf("\n");
        }
    }
    return 0;
}

你可能感兴趣的:(codeforces)