1 条题解

  • -1
    @ 2026-5-21 17:03:43
    #include<bits/stdc++.h>
    using namespace std;
    int a[1001][1001];
    bool h[1001][1001],l[1001][1001],s[1001][1001];
    int f(int x,int y){
    	if(x<=3){
    		if(y<=3)return 1;
    		if(y<=6)return 2;
    		if(y<=9)return 3;
    	}
    	if(x<=6){
    		if(y<=3)return 4;
    		if(y<=6)return 5;
    		if(y<=9)return 6;
    	}
    	if(x<=9){
    		if(y<=3)return 7;
    		if(y<=6)return 8;
    		if(y<=9)return 9;
    	}
    }
    void dfs(int x,int y){
    	if(x==10){
    		for(int i=1;i<=9;i++){
    			for(int j=1;j<=9;j++){
    				cout<<a[i][j];
    			}
    			cout<<endl;
    		}		
    		exit(0);
    	}
    	if(a[x][y]){
    		if(y+1<=9)dfs(x,y+1);
    		else dfs(x+1,1);
    	}
    	else{
    		for(int i=1;i<=9;i++){
    			if(!h[x][i]&&!l[y][i]&&!s[f(x,y)][i]){
    				a[x][y]=i;
    				h[x][i]=l[y][i]=s[f(x,y)][i]=true;
    				if(y+1<=9)dfs(x,y+1);
    				else dfs(x+1,1);
    				a[x][y]=0;
    				h[x][i]=l[y][i]=s[f(x,y)][i]=false;
    			}
    		}
    	}
    }
    int main(){
        
        for(int i=1;i<=9;i++){
            for(int j=1;j<=9;j++){
                char d;
                cin>>d;
                if(d!='?'){
                    a[i][j]=d-'0';
                    h[i][d-'0']=l[j][d-'0']=s[f(i,j)][d-'0']=true;
                }
            }
        }dfs(1,1);
        return 0;
    }
    

    信息

    ID
    5259
    时间
    2000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    5
    已通过
    4
    上传者