【ybtoj 高效進階 1.4】【深搜】數獨遊戲
【ybtoj 高效進階 1.4】【深搜】數獨遊戲
題目
解題思路
用字串輸入
將其轉換成數值放入陣列a
陣列l統計當前行數字的使用情況
陣列r統計當前列數字的使用情況
陣列f統計當前3*3方格數字的使用情況
列舉當前格可以填的數字
程式碼
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[10][10],l[10][10],r[10][10],f[5][5][10],p;
string s;
int k(int x)
{
if (x<4) return 1;
if (x<7) return 2;
return 3;
}
void dfs(int x,int y)
{
if (p) return; //已經輸出答案
if (x>9) //
{
for (int i=1;i<=9;i++)
for (int j=1;j<=9;j++)
printf("%d",a[i][j]);
printf("\n");
p=1;
return;
}
if (a[x][y])
if (y==9)
dfs(x+1,1);
else dfs(x,y+1);
for (int i=1;i<=9;i++)
if (!l[x][i]&&!r[y][i]&&!f[k(x)][k(y)][i]&&a[x][y]==0) //判斷是否能填
{
a[x][y]=i;
l[x][i]=r[y][i]=f[k(x)][k(y)][i]=1;
if (y==9)
dfs(x+1,1);
else dfs(x,y+1);
l[x][i]=r[y][i]=f[k(x)][k(y)][i]=0;
a[x][y]=0; //回溯
}
}
int main()
{
while (cin>>s)
{
if(s=="end")
return 0;
p=0;
memset(l,0,sizeof(l));
memset(r,0,sizeof(r));
memset(f,0,sizeof(f)); //清0
for (int i=1;i<=9;i++)
for (int j=1;j<=9;j++)
if (s[(i-1)*9+j-1]!='.')
{
a[i][j]=s[(i-1)*9+j-1]-48;
l[i][a[i][j]]=1;
r[j][a[i][j]]=1;
f[k(i)][k(j)][a[i][j]]=1;
}
else a[i][j]=0; //預處理
dfs(1,1);
}
return 0;
}
相關文章
- 【YbtOJ高效進階 遞推-2】奇怪漢諾塔
- 《ybtoj高效進階》第一部分第五章例題5 機器維修
- 數獨遊戲遊戲
- 數獨遊戲技巧(轉)遊戲
- 數獨遊戲九宮格遊戲
- Java 反射由淺入深 | 進階必備Java反射
- gulp進階構建專案由淺入深
- 【深度學習】1.4深層神經網路深度學習神經網路
- 拉丁方的衍生遊戲“數獨”遊戲
- 編碼的進階,檔案操作,深淺copy
- 使用Xamarin開發移動應用示例——數獨遊戲(五)儲存遊戲進度遊戲
- 如何高效利用 GitHub 關鍵字進行搜尋Github
- 你的Android資深工程師進階之路Android工程師
- 日行一算(數獨遊戲)遊戲
- 安卓開發筆記——數獨遊戲安卓筆記遊戲
- 改進版的python求解數獨Python
- 告別996?資深遊戲PM:遊戲專案開發的高效祕訣996遊戲
- 數獨遊戲的設計與實現遊戲
- Steam獨自推動Linux遊戲前進Linux遊戲
- 程式設計師的macOS系列:高效Alfred進階程式設計師MacAlfred
- 【ybt高效進階1-5-1】走迷宮
- pytest 引數化進階
- 使用Xamarin開發移動應用示例——數獨遊戲(四)產生新遊戲演算法改進遊戲演算法
- 程式設計師進階之路—如何獨當一面程式設計師
- 高效能遊戲筆記本大搜羅 遊戲想玩好 實力最重要遊戲筆記
- hdu 1241 Oil Deposits 深搜 Ac
- 【進階4-4期】Lodash是如何實現深拷貝的
- 谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構谷歌架構CNN
- 最近的學習筆記YBTOJ筆記
- Linux系統資深運維工程師的進階祕籍Linux運維工程師
- 索尼PS3不再獨享Cell 電腦將能玩高效能遊戲S3遊戲
- vue 數獨Vue
- 遊戲,墜入深淵遊戲
- 給獨立遊戲製作人的進階建議遊戲
- 【進階4-3期】面試題之如何實現一個深拷貝面試題
- 使用Xamarin開發移動應用示例——數獨遊戲(二)建立遊戲介面遊戲
- 使用Xamarin開發移動應用示例——數獨遊戲(七)新增新遊戲遊戲
- js版本的(廣、深)度優先搜尋JS