0分悬关求调
  • 板块灌水区
  • 楼主Eason_cyx大愚若智
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/14 11:27
  • 上次更新2023/11/3 03:56:27
查看原帖
0分悬关求调
741244
Eason_cyx大愚若智楼主2023/8/14 11:27

rt,找不到错啊。。。

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int gong[10][10] = {
    {0,0,0,0,0,0,0,0,0,0},  
    {0,1,1,1,2,2,2,3,3,3},  
    {0,1,1,1,2,2,2,3,3,3},  
    {0,1,1,1,2,2,2,3,3,3},  
    {0,4,4,4,5,5,5,6,6,6},  
    {0,4,4,4,5,5,5,6,6,6},  
    {0,4,4,4,5,5,5,6,6,6},  
    {0,7,7,7,8,8,8,9,9,9},  
    {0,7,7,7,8,8,8,9,9,9},  
    {0,7,7,7,8,8,8,9,9,9}   
};
int a[15][15];
bool vis[15][15],cntr[15][15],cntc[15][15],cntg[15][15];
void dfs(int x,int y) {
    if(x == 10 && y == 1) {
        for(int i = 1;i <= 9;i++) {
            for(int j = 1;j <= 9;j++) {
                cout << a[i][j] << " \n"[j == 9];
            }
        }
        exit(0);
    }
    if(vis[x][y]) return;
    int nx = x,ny = y+1;
    if(ny == 10) nx = x+1,ny = 1;
    if(a[nx][ny]) {
        dfs(nx,ny);
        return;
    }
    for(int i = 1;i <= 9;i++) {
        if(cntr[x][i] || cntc[y][i] || cntg[gong[x][y]][i]) continue;
        cntr[x][i] = cntc[y][i] = cntg[gong[x][y]][i] = true;
        a[x][y] = i;
        dfs(nx,ny);
        cntr[x][i] = cntc[y][i] = cntg[gong[x][y]][i] = false;
        a[x][y] = 0;
    }
}
int main(){
    for(int i = 1;i <= 9;i++)
        for(int j = 1;j <= 9;j++)
            cin >> a[i][j];
    dfs(1,1);
    return 0;
}

悬一关!

2023/8/14 11:27
加载中...