hdu4069 Squiggly Sudoku

2024-01-28 06:08
文章标签 sudoku squiggly hdu4069

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/652691

相关文章

LeetCode - 37. Sudoku Solver

37. Sudoku Solver  Problem's Link  ---------------------------------------------------------------------------- Mean:  求解数独. analyse: 只是9宫格的数独,而且测试数据都不难,所以可以直接使用递归求解,类似于N-Queue问题. 但如果宫格

LeetCode - 36. Valid Sudoku

36. Valid Sudoku  Problem's Link  ---------------------------------------------------------------------------- Mean:  给定一个数独,判断这个数独是否合法. analyse: 略. Time complexity: O(N)   view

LeetCode 36 Valid Sudoku

题意: 判断一个填了一部分的数独有没有解。 思路: 按照数独规则判断即可,即同一行、同一列、同一个3*3的方格内没有数字重复出现。 代码: class Solution {public:bool isValidSudoku(vector <vector<char>> &board) {const int step = 3;bool app[step * step];fo

LeetCode | Sudoku Solver

You may assume that there will be only one unique solution. A sudoku puzzle… …and its solution numbers marked in red. 数独问题,暴力深搜。 注意在找到解之后,要及时return,以及在第某一行无解的时候,要及时return,这样剪枝才不会导致超时。 class S

37. Sudoku Solver 回溯

Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by the character '.'. You may assume that there will be only one unique solution. 回溯问题: 思路:

LeetCode第37之Sudoku Solver

主要思路:回溯法,每个‘.’的位置遍历“1-9”,如果满足则继续下一个位置,如果遍历完“1-9”仍不满足则将该位置改为‘.’,然后回溯到上一个位置。 缺点就是运行时间有点长。 C++代码: #include <iostream>#include <vector>using namespace std;//打印board矩阵void print_vec(vector<vector<cha

POJ2676 Sudoku [数独]

好题,也很实用,犯了几个错误 1.在枚举赋值的时候,思维有个错误:当当前的赋值不能填完这个数独,应该是继续下一个循环,而不是return false 终止枚举 2.Generic Programing写错了,,,本来那个memset想写成Generic Programing的,,,然后,永远只有第一组结果对 不说了,泪哈,,, #include <cstdio>#include <c

HDU 4069 Squiggly Sudoku DLX 精确覆盖

题意: 数独问题,给你9个连通块,每个连通块有9个位置。 现在已经有一些数字在上面,让你在空的位置上放数字。 问你是否存在方案,使得每个连通块包含1~9,并且每行每列都有1~9的数字。 输出结果参照样例。 思路: 题中并没有直接给出数独的情况,而是给了一个数值,里面包含了连通块以及是否有数字在该位置的信息。 首先根据所给的数值,bfs把每个连通块都找出来,然后编号。 剩下的,

LeetCode Sudoku Solver

Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by the character '.'. You may assume that there will be only one unique solution. A sudoku p

Leetcode 037 Sudoku Solver(递归)

题目连接:Leetcode 037 Sudoku Solver 解题思路:预处理出每个'.'可能的数值,然后处理一些直观的解,比如某个位置只有一种可能的数字;或者是它所在的一行,一列或者块,只有它可能为这个数字。 剩下的位置都是有多种可能,它们的取值和其它位置相关联。这里的解决方法是暴力求解,枚举每个位置的值,然后递归,直到所有位置都被赋值并且没有冲突时,答案可知。 class Soluti