多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 互聯(lián)網(wǎng) > POJ 3740 Dancing Links

POJ 3740 Dancing Links

來源:程序員人生   發(fā)布時(shí)間:2014-10-12 22:25:45 閱讀次數(shù):2061次

Dancing Links學(xué)習(xí):http://www.cnblogs.com/steady/archive/2011/03/15/1984791.html

以及圖文學(xué)習(xí):http://www.cnblogs.com/grenet/p/3145800.html

思路:這題是Dancing Links即DLX的最簡單題目了吧,看懂了這個(gè)知識點(diǎn)之后,也不想自己敲了,然后搜索了好多個(gè)代碼模板,覺得這個(gè)我比較好理解也比較好掌握,然后就用這個(gè)模板了。

#include<iostream> #include<cstring> #include<string> #include<cstdio> #include<algorithm> #include<vector> using namespace std; #define MAXN 350*30+30 #define INF 0xFFFFFF int head,sz; int U[MAXN],D[MAXN],L[MAXN],R[MAXN];//上下左右鏈表指針 int H[MAXN],ROW[MAXN],C[MAXN],S[MAXN],O[MAXN]; void remove(int c) { L[R[c]]=L[c]; R[L[c]]=R[c]; for(int i=D[c]; i!=c; i=D[i]) { for(int j=R[i]; j!=i; j=R[j]) { U[D[j]]=U[j]; D[U[j]]=D[j]; --S[C[j]]; } } } void resume(int c) { for(int i=U[c]; i!=c; i=U[i]) { for(int j=L[i]; j!=i; j=L[j]) { ++S[C[j]]; U[D[j]]=j; D[U[j]]=j; } } L[R[c]]=c; R[L[c]]=c; } bool dfs(int k) { if(R[head]==head) return true; int s=INF,c; for (int t=R[head]; t!=head; t=R[t]) if (S[t]<s) s=S[t],c=t; remove(c); for(int i=D[c]; i!=c; i=D[i]) { O[k]=ROW[i]; for(int j=R[i]; j!=i; j=R[j]) remove(C[j]); if(dfs(k+1)) return true; for(int j=L[i]; j!=i; j=L[j]) resume(C[j]); } resume(c); return false; } void init(int m)//m是列 { head=0;//頭指針為0 for(int i=0; i<=m; i++) { U[i]=i; D[i]=i;//建立雙向十字鏈表 L[i]=i-1; R[i]=i+1; S[i]=0; } R[m]=0; L[0]=m; S[0]=INF+1; sz=m+1; memset(H,0,sizeof(H)); } void insert(int i, int j) { if(H[i]) { L[sz] = L[H[i]]; R[sz] = H[i]; L[R[sz]] = sz; R[L[sz]] = sz; } else { L[sz] = sz; R[sz] = sz; H[i] = sz; } U[sz] = U[j]; D[sz] = j; U[D[sz]] = sz; D[U[sz]] = sz; C[sz] = j; ROW[sz] = i; ++S[j]; ++sz; } int main() { //freopen("1.txt","r",stdin); int n,m,x; while(~scanf("%d%d",&n,&m)) { init(m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { scanf("%d",&x); if(x) insert(i,j); } if(dfs(0)) //從頭指針0開始遍歷 puts("Yes, I found it"); else puts("It is impossible"); } return 0; }


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久一区二区三区99 | 嗯啊在线观看免费影院 | 亚洲精品欧美精品国产精品 | 国产成人精品久久一区二区小说 | 91亚洲精品一区二区自 | 高清欧美一区二区三区 | 免费国产在线观看老王影院 | 欧美v亚洲| 国产在线精品一区二区不卡 | 免费毛片网 | 久久精品综合一区二区三区 | 久久亚洲精品久久久久 | 在线亚洲精品 | 久久人人爱| 高清欧美不卡一区二区三区 | 噜噜私人影院 | 日韩专区亚洲综合久久 | 91成年人免费视频 | 亚洲天堂2013 | 在线h观看 | 日韩欧美手机在线 | free性m.freesex欧美 | 亚洲欧美日韩国产精品 | 一国产一级淫片a免费播放口 | 看全色黄大色大片免费久久久 | 欧美日韩福利视频一区二区三区 | 日本高清无吗免费播放 | 一级毛片在播放免费 | 国产成人免费视频精品一区二区 | 亚洲网站视频在线观看 | 波多野一区二区三区在线 | 亚洲图片欧美文学小说激情 | 亚洲综合国产一区二区三区 | 色婷婷久久综合中文久久蜜桃 | 亚洲韩国日本欧美一区二区三区 | 精品国产亚洲一区二区三区 | 2020自拍偷区亚洲综合图片 | 日韩欧美一区二区三区不卡在线 | 国产精品一区久久 | 美女牲交视频一级毛片 | 中文字幕在线亚洲 |