9*9的數獨(dfs)
蒜頭君今天突然開始還念童年了,想回憶回憶童年。他記得自己小時候,有一個很火的遊戲叫做數獨。便開始來了一局緊張而又刺激的高階數獨。蒜頭君做完發現沒有正解,不知道對不對? 不知道聰明的你能否給出一個標準答案?
標準數獨是由一個給與了提示數字的 9×99 \times 99×9 網格組成,我們只需將其空格填上數字,使得每一行,每一列以及每一個 3×33 \times 33×3 宮都沒有重複的數字出現。
膜拜大佬,自己真寫不出來。。。
用結構體去儲存輸入中的空白(0),真精明,化成一維的。漲姿勢了。
#include<bits/stdc++.h>
using namespace std;
int a[10][10];
int b[10][10];
int ha[10][10],lie[10][10];
typedef pair<int ,int> pii;
pii P[100];
int ok=0,s=0;
bool check(int x,int o)
{
pii p=P[x];
int m=(p.first-1)/3*3;
int n=(p.second-1)/3*3;
for(int i=m+1;i<=m+3;i++)
{
for(int j=n+1;j<=n+3;j++)
{
if(a[i][j]==o)
return false;
}
}
return true;
}
void dfs(int x)
{
if(ok==1)
return;
if(x==s)
{
ok=1;
for(int i=1;i<10;i++)
{
for(int j=1;j<10;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return;
}
pii p=P[x];
for(int i=1;i<=9;i++)
{
if(!ha[p.first][i]&&!lie[p.second][i]&&check(x,i))
{
ha[p.first][i]=1;lie[p.second][i]=1;
a[p.first][p.second]=i;
dfs(x+1);
ha[p.first][i]=0;lie[p.second][i]=0;
a[p.first][p.second]=0;
}
}
}
int main()
{
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]!=0)
{
ha[i][a[i][j]]=1;
lie[j][a[i][j]]=1;
}
else
{
P[s].first=i;
P[s++].second=j;
}
}
}
dfs(0);
return 0;
}
相關文章
- 數獨問題(DFS+回溯)
- 9-數對的個數
- 7數的逆向操作(9)
- 9/9
- ●六數謎題●(9)
- 9.迴文數
- Acwing166 數獨題解 - DFS剪枝最佳化
- leetcode的第9題:迴文數LeetCode
- 斐波那契數列9數4層4解平方魔法塔(9)
- LeetCode9[迴文數]LeetCode
- A - 高數Umaru系列(9)——哈士奇
- PHP列印9*9的乘法表PHP
- ●連續質數2.3.5.7.11.13.17.19的規律●(9)
- laravel 9 倒數計時了Laravel
- LeetCode-N9-迴文數LeetCode
- 9
- 2024/9/9工作日誌
- iZotope Ozone 9 Pro for Mac(臭氧9)Mac
- 2020-9-30數學作業
- 1~8類自然數(lzrs)概念的手遊(9)
- 1, 1/2, 3/4, 5/6, 7/8, 9/10, 11/12:七數謎題(9)
- Nessus Professional 10.7.5 Auto Installer for RHEL 9/AlmaLinux 9/Rocky Linux 9 (updated Jul 2024)Linux
- 4/9
- 6.17 9
- 6/9
- LeetCode每日一題:迴文數(No.9)LeetCode每日一題
- RHEL 9 / Rocky Linux 9 上安裝 MySQLLinuxMySql
- 1.2.3.4.5.6.7的表達(9)
- Promise 的 9 個提示Promise
- 一個未知數的一元9次方
- MIT 線性代數 Linear Algebra 9: 向量空間的一些定義 -- 線性獨立,基,維度MIT
- 9月9日—9月15日共有48款遊戲開測|GameRes遊戲GAM
- 9K9K:2019年9月網頁遊戲資料包告網頁遊戲
- RockyLinux9,RHEL9修改統一的網路卡名稱Linux
- 9-7 ~ 9-27做論文全過程的反思
- NEO改進協議提案9(NEP-9)協議
- ◆6質數手遊(9)◆今期上下之和:-31
- ◆6質數手遊(11)◆今期上下之和:-9