POJ 2676/2918 數獨(dfs)

思路:記錄每行每列每一個宮已經出現的數字就可以。數據比較弱

另外POJ 3074 3076 必須用剪枝策略。但實現較麻煩,還是以后學了DLX再來做吧

//Accepted	160K	0MS	
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N =15;
char sudo[N][N];
bool visr[N][N],visc[N][N],visg[N][N];
int pos[N][N];
bool flag;
void print()
{for(int i=1;i<=9;i++)printf("%s\n",sudo[i]+1);
}
void dfs(int x,int y)
{if(y==10){dfs(x+1,1);return ;}if(x==10){print();flag=1;return ;}if(sudo[x][y]!='0'){dfs(x,y+1);return ;}for(int i=1;i<=9&&!flag;i++){if(visr[x][i]==0&&visc[y][i]==0&&visg[pos[x][y]][i]==0){sudo[x][y]='0'+i;visc[y][i]=visr[x][i]=visg[pos[x][y]][i]=1;dfs(x,y+1);sudo[x][y]='0';visc[y][i]=visr[x][i]=visg[pos[x][y]][i]=0;}}
}
void ini()
{flag = false ;memset(visr,0,sizeof(visr));memset(visc,0,sizeof(visc));memset(visg,0,sizeof(visg));
}
int main()
{for(int i=1;i<=9;i++)for(int j=1;j<=9;j++)pos[i][j]=((j-1)/3+1)+3*((i-1)/3);int T;scanf("%d",&T);for(int cas=1;cas<=T;cas++){printf("Scenario #%d:\n",cas);ini();for(int i=1;i<=9;i++)scanf("%s",sudo[i]+1);for(int i=1;i<=9;i++)for(int j=1;j<=9;j++){int val=sudo[i][j]-'0';visr[i][val]=true;visc[j][val]=true;visg[pos[i][j]][val]=true;}dfs(1,1);puts("");}return 0;
}


轉載于:https://www.cnblogs.com/bhlsheji/p/5137909.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272430.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272430.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272430.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

負載均衡很難?看完這篇全懂了

來自&#xff1a;金鐘路上小碼工鏈接&#xff1a;https://www.cnblogs.com/danbing/p/7459224.html一、什么是負載均衡&#xff1f;互聯網早期&#xff0c;業務流量比較小并且業務邏輯比較簡單&#xff0c;單臺服務器便可以滿足基本的需求&#xff1b;但隨著互聯網的發展&#…

配置樹莓派linux的內核和編譯并將鏡像拷貝至樹莓派

驅動代碼的編寫需要一個提前編譯好的內核&#xff0c;編譯內核就必須配置&#xff0c;配置的最終目標會生成.config文件&#xff0c;該文件指導makefile去把有用的東西組織成內核。 如何生成.config文件&#xff1a; 第一種方式&#xff1a; 廠家配linux內核源碼&#xff0c;比…

h5 與原生 app 交互的原理

作者&#xff1a;senntyousegmentfault.com/a/1190000016759517現在移動端 web 應用&#xff0c;很多時候都需要與原生 app 進行交互、溝通&#xff08;運行在 webview中&#xff09;&#xff0c;比如微信的 jssdk&#xff0c;通過 window.wx 對象調用一些原生 app 的功能。所以…

(原)直方圖的相似性度量

轉載請注明出處&#xff1a; http://www.cnblogs.com/darkknightzh/p/5147982.html 對于兩直方圖 $S\left\{ {{s}_{1}},\cdots {{s}_{n}} \right\}$ 及 $M\left\{ {{m}_{1}},\cdots {{m}_{n}} \right\}$&#xff0c;n為直方圖維數&#xff08;如255&#xff09;&#xff0c;這兩…

【ROS問題】rqt_plot運行報錯

本人Linux版本&#xff1a;Ubuntu 18.04 LTS ROS版本&#xff1a;Melodic 方案一&#xff1a; 你看那個報錯&#xff0c;全是Matplotlib的報錯&#xff0c;是這個東西版本不夠高&#xff0c;重新安裝就好啦。 python -m pip install -U pip python -m pip install -U matp…

BCP使用筆記整理

一、BCP 簡介大容量復制程序實用工具 (bcp) 可以在 Microsoft SQL Server 實例和用戶指定格式的數據文件間大容量復制數據。 使用 bcp 實用工具可以將大量新行導入 SQL Server 表&#xff0c;或將表數據導出到數據文件。 除非與 queryout 選項一起使用&#xff0c;否則使用該實…

怎樣基于谷歌地圖的Server緩存公布Image Service服務

怎樣基于谷歌地圖的Server緩存公布Image Service服務第一步&#xff1a;下載地圖數據下載安裝水經注萬能地圖下載器&#xff0c;啟動時僅僅選擇電子.谷歌&#xff08;這里能夠依據自己的須要選擇&#xff09;。例如以下圖所看到的。找到成都后框選下載成都區域&#xff0c;例如…

ROS文件系統介紹

預備工作 本教程中我們將會用到ros-tutorials程序包&#xff0c;請先安裝&#xff1a; sudo apt-get install ros-<distro>-ros-tutorials快速了解文件系統概念 Packages: 軟件包&#xff0c;是ROS應用程序代碼的組織單元&#xff0c;每個軟件包都可以包含程序庫、可執…

接軟件開發項目,你需要知道這些!

作為一個程序員&#xff0c;跟客戶交流是最困難的事情了&#xff0c;所以在上路之前&#xff0c;復習一下這兩年遇到的奇怪的客戶言論&#xff0c;以便以后更好地跟客戶交流。1、不就是做個網站&#xff08;或者別的&#xff09;么&#xff1f;為什么這么貴&#xff1f;一定耐心…

整理的一些比較基礎的面試知識點

1、面向對象的三大特性或其具體體現在哪 2、頁面間傳值方式 3、session cookie原理及區別 4、hasstable&#xff0c;dictionary&#xff0c;List &#xff0c;collection 5、類和抽象類&#xff0c;類和接口&#xff0c;接口和抽象類區別及適合場景 6、Get和Post比較優缺點或區…

五種類型的程序員,你屬于哪一種?

在我的編程生涯中,我碰到過很多奇奇怪怪的對手和同盟。我把這些編碼戰士們分成五類&#xff0c;有些人是你隊伍中的好伙伴&#xff0c;有些人則是搗蛋者&#xff0c;讓你的每一個計劃都完不成。不管怎么說&#xff0c;他們在軟件開發的諸神殿上都占有一席之地。如果你的團隊中沒…

創建ROS程序包

一個catkin程序包由什么組成? 一個程序包要想稱為catkin程序包必須符合以下要求&#xff1a; 該程序包必須包含catkin compliant package.xml文件這個package.xml文件提供有關程序包的元信息。 程序包必須包含一個catkin 版本的CMakeLists.txt文件&#xff0c;而Catkin meta…

一些有用的js插件

getfuelux.com 一系列插件合集 Ion.RangeSlider 超級牛的范圍選擇控件 Ion.CheckRadio Ion.Tabs Ion.Calendar Ion.ImageSlider Ion.Zoom www.ngwidgets.com Advanced UI Widgets for AngularJS http://www.jq22.com/ jQuery 插件庫 http://jvectormap.com/ 地圖插件 X-…

C# FTP操作類庫

class FTP_Class{string ftpServerIP;string ftpUserID;string ftpPassword;FtpWebRequest reqFTP; #region 連接/// <summary>/// 連接FtpWebRequest/// </summary>/// <param name"path"></param>private void Connect(String path)/…

安裝并配置ROS環境

參考該網址內容&#xff1a;http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment

Cropper – 簡單的 jQuery 圖片裁剪插件

Cropper 是一個簡單的 jQuery 圖像裁剪插件。它支持選項&#xff0c;方法&#xff0c;事件&#xff0c;觸摸&#xff08;移動&#xff09;&#xff0c;縮放&#xff0c;旋轉。輸出的裁剪數據基于原始圖像大小&#xff0c;這樣你就可以用它們來直接裁剪圖像。 如果你嘗試裁剪跨域…

C# JSON格式數據用法

JSON簡介JSON(全稱為JavaScript ObjectNotation) 是一種輕量級的數據交換格式。它是基于JavaScript語法標準的一個子集。JSON采用完全獨立于語言的文本格式&#xff0c;可以很容易在各種網絡、平臺和程序之間傳輸。JSON的語法很簡單&#xff0c;易于人閱讀和編寫&#xff0c;同…

Ros命令及功能

運行小烏龜代碼&#xff1a; roscore rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key一些命令及作用 ros 加tap //查看電腦中以ros開頭的命令 rqt_graph //將系統內的主要資源以可視化的形式展現出來 rosnode list //列出系統節點 命令 --help //查看命…

數據庫——環境初建改端口和密碼(轉)

一、修改APACHE的監聽端口 2、在界面中選apache&#xff0c;彈出隱藏菜單選項&#xff0c;打開配置文件httpd.conf; 2、找到Listen 80 和 ServerName localhost:80; 3、將80改成801&#xff08;當然自己也可以設定別的不使用的端口&#xff0c;例如8000等&#xff09;; 4、保存…

文件系統認知

什么是文件系統 常規認知是&#xff1a;linux根目錄那些東西 百科&#xff1a;文件系統是操作系統用于明確存儲設備組織文件的方法&#xff0c;操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統&#xff0c;簡稱文件系統。 以上說的方法&#xff1a;就是文件管理…