re求助!!!
查看原帖
re求助!!!
965313
youth191954楼主2024/5/30 22:07
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100][100],h[100][100],l[100][100],g[100][100],cnt,tot,c[100][100],num;
string s;
struct node{
	int x, y;
	bool operator<(node b)const{return y>b.y;}
}aa[82],k[15];
int dfs(int i){
    if(i>tot){
    	for(int i=1;i<=9;i++){
    	for(int j=1;j<=9;j++)cout<<a[i][j];
		cout<<endl; 
		}	
    	return 0; 
	}
    int x=aa[i].x,y=aa[i].y;
	for(int k=1;k<=9;k++){
		if(!h[x][k]&&!l[y][k]&&!g[(x-1)/3*3+(y-1)/3+1][k]){
			a[x][y]=h[x][k]=l[y][k]=g[(x-1)/3*3+(y-1)/3+1][k]=k;
			dfs(i+1);
			a[x][y]=h[x][k]=l[y][k]=g[(x-1)/3*3+(y-1)/3+1][k]=0;	
		}
	} 
}
int main(){
	cin>>num;
	while(num--){
		for(int i=1;i<=9;i++){
		cin>>s;
		for(int j=1;j<=9;j++)a[i][j]=s[j-1]-'0'+0;
	}
    for(int i=1;i<=9;i++){
    	k[i].x=i;
        for(int j=1;j<=9;j++){
            if(a[i][j]>0){ 
				k[i].y++;           
                h[i][a[i][j]]=l[j][a[i][j]]=g[(i-1)/3*3+(j-1)/3+1][a[i][j]]=1;
            }
        }
    }
    sort(k+1,k+10);
    for(int i=1;i<=9;i++){
    	int row=k[i].x;
    	for(int j=1;j<=9;j++) 
    		if(a[row][j]==0)aa[++tot].x=row,aa[tot].y=j;
    }
	dfs(1); 
	}
	return 0;
}
```调了半天也调不出来
2024/5/30 22:07
加载中...