• 数独


    花了半个小时搞了个数独。。

    判断模拟

    dfs回溯构造

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<cstring>
    #include<algorithm>
    #include<climits>
    typedef long long LL;
    using namespace std;
    int RD(){
        int out = 0,flag = 1;char c = getchar();
        while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();}
        while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();}
        return flag * out;
        }
    int map[19][19];
    
    bool check(int x,int y){
    	int k = map[x][y];
    	for(int i = 1;i <= 9;i++){
    		if(map[x][i] == k && i != y)return 0;
    		}
    	for(int i = 1;i <= 9;i++){
    		if(map[i][y] == k && i != x)return 0;
    		}
    	int xx,yy;
    	if(x >= 1 && x <= 3)xx = 1;
    	else if (x >= 4 && x <= 6)xx = 4;
    	else xx = 7;
    	
    	if(y >= 1 && y <= 3)yy = 1;
    	else if (y >= 4 && y <= 6)yy = 4;
    	else yy = 7;
    	
    	for(int i = xx;i <= xx + 2;i++)for(int j = yy;j <= yy + 2;j++){
    		if(i == x && j == y)continue;
    		if(map[i][j] == k)return 0;
    		}
    	return 1;
    	}
    void dfs(int x,int y,int cnt){
    	if(cnt == 9 * 9){
    		printf("
    
    
    
    ");
    		for(int i = 1;i <= 9;i++){
    			if(i % 3 == 1)printf("
    ");
    			for(int j = 1;j <= 9;j++){
    				if(j % 3 == 1)printf(" ");
    				printf("%d ",map[i][j]);
    				}
    			printf("
    ");
    			}
    		return ;
    		}
    	if(map[x][y] == 0){
    		for(int i = 1;i <= 9;i++){
    			map[x][y] = i;
    			if(check(x,y)){
    				if(y == 9)dfs(x + 1,1,cnt + 1);
    				else dfs(x,y + 1,cnt + 1);
    				}
    			}
    			map[x][y] = 0;
    		}
    	else{
    		if(y == 9)dfs(x + 1,1,cnt + 1);
    		else dfs(x,y + 1,cnt + 1);
    		}
    	}
    int main(){
    	for(int i = 1;i <= 9;i++)for(int j = 1;j <= 9;j++){
    		map[i][j] = RD();
    		}
    	dfs(1,1,0);
    	return 0;
    	}
    
  • 相关阅读:
    vim编辑器
    centos7启动顺序加密的问题
    centos7进入单用户模式
    centos7修改默认运行级别的变化
    C#构建DataTable(转)
    策略模式简介
    简单工厂模式(转)
    NPOI导Excel样式设置(转)
    VS2012启用angularjs智能提示Intelligence
    WebForm页面间传值方法(转)
  • 原文地址:https://www.cnblogs.com/Tony-Double-Sky/p/9285579.html
Copyright © 2020-2023  润新知