本文主要是介绍hdu4069 Squiggly Sudoku,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解一个9*9的数独,行和列和普通数独一样需要出现1~9,但是它的小区域不是方形的,而是一个不规则的面积为9的图形。
DLX模版题。位运算和dfs处理小区域的边界就不说了。DLX搜解,搜到一个解以后继续搜,如果搜到第二个解则说明有多解,立即跳出。需要注意的是,搜到第一个解以后,需要保存解,不然继续搜索原来的解会被破坏。
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std; #define ll long long const int SLOT = 0;
const int ROW = 1;
const int COL = 2;
const int SUB = 3;int encode(int type,int id,int num){return type*81+(id-1)*9+num;
}int mp[12][12];
int sub[12][12];const int maxnode=270000;
const int maxn=350;
const int maxr=750;int anscnt;
void init(){anscnt=0;memset(sub,0,sizeof(sub));
}struct dlx{#define FOR(i,A,s) for(i
这篇关于hdu4069 Squiggly Sudoku的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!