青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
經(jīng)典數(shù)獨題,2014年的時候用當(dāng)年ACM的數(shù)獨模板交過一次,RE(估計是MLE),2022再用一樣代碼交,AC了而且速度比96.66%的CPP代碼快
用Python又做了一遍,純DFS,判斷當(dāng)前局面的方法借鑒了Discussion中的簡潔寫法(用set)
Python版:
 1 #37
 2 #Runtime: 351 ms
 3 #Memory Usage: 13.5 MB
 4 
 5 class Solution(object):
 6     
 7     possible = set(str(i) for i in range(110))
 8     
 9     def findEmptyCell(self):
10         for r in range(len(self.board)):
11             for c in range(len(self.board[0])):
12                 if self.board[r][c] == '.':
13                     return r, c, False
14         return -1-1, True
15     
16     
17     def checkBoard(self, r, c):
18         return self.possible - self.getBox(r, c) - self.getRow(r, c) - self.getCol(r, c)
19     
20     
21     def getBox(self, r, c):
22         res = set()
23         for i in range(r // 3 * 3, r // 3 * 3 + 3):
24             res.update(self.board[i][c // 3 * 3 : c // 3 * 3 + 3])
25         return res
26     
27     
28     def getRow(self, r, c):
29         return set(self.board[r])
30     
31     
32     def getCol(self, r, c):
33         return set([row[c] for row in self.board])
34         
35         
36     def DFS(self):
37         r, c, fin = self.findEmptyCell()
38         if fin:
39             return True
40         candidate_nums = self.checkBoard(r, c)
41         if not candidate_nums:
42             return False
43         for num in candidate_nums:
44             self.board[r][c] = num
45             if self.DFS():
46                 return True
47             self.board[r][c] = '.'
48         return False
49         
50 
51     def solveSudoku(self, board):
52         """
53         :type board: List[List[str]]
54         :rtype: None Do not return anything, modify board in-place instead.
55         """
56         self.board = board
57         self.DFS()
C++版:
  1 #37
  2 #Runtime: 7 ms
  3 #Memory Usage: 13 MB
  4 
  5 class Solution {
  6 public:
  7     #define INF 0x7fffffff
  8     #define maxn 330
  9     #define maxm 740
 10     
 11     int l[maxn*maxm],r[maxn*maxm],u[maxn*maxm],d[maxn*maxm],ch[maxn*maxm],s[maxn];
 12     int ans[10][10],adj[maxm][maxn];
 13     int head, n, m;
 14     
 15     void remove(const int &c){
 16         l[r[c]]=l[c];
 17         r[l[c]]=r[c];
 18         for(int i=d[c];i!=c;i=d[i]){
 19             for(int j=r[i];j!=i;j=r[j]){
 20                 u[d[j]]=u[j];
 21                 d[u[j]]=d[j];
 22                 s[ch[j]]--;
 23             }
 24         }
 25     }
 26     
 27     void resume(const int &c){
 28         for(int i=d[c];i!=c;i=d[i]){
 29             for(int j=r[i];j!=i;j=r[j]){
 30                 s[ch[j]]++;
 31                 u[d[j]]=j;
 32                 d[u[j]]=j;
 33             }
 34         }
 35         l[r[c]]=c;
 36         r[l[c]]=c;
 37     }
 38     
 39     int Build(){
 40         int i,j,pre,cur,st;
 41         head=0;
 42         for(j=head;j<n;j++){
 43             r[j]=j+1;
 44             l[j+1]=j;
 45         }
 46         l[head]=j;
 47         r[j]=head;
 48         //column
 49         for(j=1;j<=n;j++){
 50             pre=j;
 51             s[j]=0;
 52             for(i=1;i<=m;i++){
 53                 if(adj[i][j]){
 54                     cur=n*i+j;
 55                     ch[cur]=j;
 56                     s[j]++;
 57                     d[pre]=cur;
 58                     u[cur]=pre;
 59                     pre= cur;
 60                 }
 61             }
 62             cur=j;
 63             d[pre]=cur;
 64             u[cur]=pre;
 65             if(!s[j])return 0;
 66         }
 67         //row
 68         for(i=1;i<=m;i++){
 69             pre=st=-1;
 70             for(j=1;j<=n;j++){
 71                 if(adj[i][j]){
 72                     cur=i*n+j;
 73                     if(pre!=-1){
 74                         r[pre]=cur;
 75                         l[cur]=pre;
 76                     }
 77                     else
 78                         st=cur;
 79                     pre=cur;
 80                 }
 81             }
 82             if(st!=-1){
 83                 cur=st;
 84                 r[pre]=cur;
 85                 l[cur]=pre;
 86             }
 87         }
 88         return 1;
 89     }
 90     
 91     bool DFS(){
 92         if(r[head]==head)return true;
 93         int c,i,j;
 94         int ss=INF;
 95         for(int t=r[head];t!=head;t=r[t]){
 96             if(s[t]<ss){
 97                 ss=s[t];
 98                 c=t;
 99             }
100         }
101         remove(c);
102         for(i=d[c];i!=c;i=d[i]){
103             int t1=(i-1)/n;
104             int n1=(t1+8)/9;
105             int k1=t1%9;
106             if(!k1)k1=9;
107             int x=(n1+8)/9;
108             int y=n1%9;
109             if(!y)y=9;
110             ans[x][y]=k1;
111             for(j=r[i];j!=i;j=r[j])remove(ch[j]);
112             if(DFS())return true;
113             for(j=l[i];j!=i;j=l[j])resume(ch[j]);
114         }
115         resume(c);
116         return false;
117     }
118     
119     void solveSudoku(vector<vector<char> > &board) {
120         memset(adj, 0sizeof(adj));
121         for(int i = 1; i <= 9; i++){
122             for(int j = 1; j <= 9; j++){
123                 int tmp = 9 * (i - 1+ j;
124                 if(board[i - 1][j - 1== '.'){
125                     for(int k = 1; k <= 9; k++){
126                         adj[9*(tmp-1)+k][tmp]=1;
127                         adj[9*(tmp-1)+k][81+(i-1)*9+k]=1//row
128                         adj[9*(tmp-1)+k][162+(j-1)*9+k]=1//col
129                         adj[9*(tmp-1)+k][243+((i-1)/3*3+(j+2)/3-1)*9+k]=1//grid
130                     }
131                 }
132                 else{
133                     int k = board[i - 1][j - 1- '0';
134                     adj[9*(tmp-1)+k][tmp]=1;
135                     adj[9*(tmp-1)+k][81+(i-1)*9+k]=1//row
136                     adj[9*(tmp-1)+k][162+(j-1)*9+k]=1//col
137                     adj[9*(tmp-1)+k][243+((i-1)/3*3+(j+2)/3-1)*9+k]=1//grid
138                 }
139             }
140         }
141         m=729;
142         n=324;
143         Build();
144         if(DFS()) {
145             for(int i = 1; i <= 9; i++){
146                 for(int j = 1; j <= 9; j++){
147                     board[i - 1][j - 1= ans[i][j] + '0';
148                 }
149             }
150         }
151     }
152 };
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美1区2区视频| 久久蜜桃av一区精品变态类天堂| 欧美精品97| 欧美人牲a欧美精品| 欧美伦理在线观看| 国产精品久久久久久影视| 亚洲精品国产精品国自产观看浪潮 | 99热免费精品在线观看| 亚洲大胆av| 夜夜嗨av一区二区三区中文字幕 | 亚洲精品一区在线观看| 99天天综合性| 久久久久久9| 亚洲九九精品| 欧美有码在线视频| 欧美国产日产韩国视频| 国产精品久久久久国产精品日日 | 国产亚洲综合精品| 亚洲国产精品久久久久秋霞不卡| 日韩一级大片在线| 欧美与黑人午夜性猛交久久久| 久久性天堂网| 亚洲精品国产品国语在线app| 亚洲午夜激情| 美女图片一区二区| 国产日韩欧美在线一区| 亚洲人屁股眼子交8| 欧美一区在线直播| 亚洲精品一区二区三区av| 欧美一区1区三区3区公司| 欧美日韩国产大片| 激情文学一区| 午夜精品久久99蜜桃的功能介绍| 欧美福利一区二区| 欧美综合77777色婷婷| 欧美视频免费在线| 亚洲伦伦在线| 麻豆精品在线观看| 亚洲一区二区三区在线观看视频| 久久久午夜精品| 国产日韩欧美亚洲一区| av成人老司机| 亚洲第一色中文字幕| 久久精品日韩欧美| 国产精品毛片a∨一区二区三区| 亚洲国产三级| 久久久久久亚洲精品不卡4k岛国| 日韩视频一区二区三区在线播放| 久久综合成人精品亚洲另类欧美| 国产日韩精品视频一区二区三区| 亚洲一区二区精品在线| 亚洲精品日韩在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲一区免费看| 欧美午夜精品理论片a级大开眼界| 亚洲精品国产无天堂网2021| 美女日韩欧美| 美国十次了思思久久精品导航| 尤物精品在线| 欧美 日韩 国产 一区| 久久精品一区| 在线观看欧美精品| 欧美a级大片| 免费在线亚洲| 亚洲色图综合久久| 在线视频精品一区| 国产精品a级| 欧美一区中文字幕| 久久九九电影| 亚洲国产激情| 亚洲精品免费在线观看| 国产精品jvid在线观看蜜臀| 亚洲欧美在线一区二区| 亚洲一区二区av电影| 国产欧美在线视频| 久久琪琪电影院| 欧美风情在线观看| 国产精品99久久久久久人| 亚洲毛片av| 国产精品一区二区a| 久久一区二区三区国产精品 | 欧美精品一区在线观看| 一区二区三区高清视频在线观看| 一本一道久久综合狠狠老精东影业 | 欧美在线播放| 久久精品国产久精国产思思| 亚洲国产成人午夜在线一区| 亚洲韩国青草视频| 国产精品自拍一区| 欧美高清视频一区二区三区在线观看| 欧美高清视频在线播放| 亚洲综合视频网| 久久久久久久久综合| 亚洲日本乱码在线观看| 亚洲无线观看| 亚洲精品久久久久中文字幕欢迎你| 亚洲免费观看高清完整版在线观看熊| 国产精品日日摸夜夜添夜夜av| 久久久午夜视频| 欧美精品系列| 久久免费国产精品| 欧美日韩另类丝袜其他| 久久av最新网址| 亚洲免费高清视频| 黄色一区二区在线| 99re66热这里只有精品3直播| 欧美中文字幕在线| 日韩视频免费观看| 欧美一区二区精美| 中文国产一区| 蜜臀av一级做a爰片久久| 性欧美1819性猛交| 国产精品www色诱视频| 亚洲电影在线免费观看| 国产精品日本一区二区| 亚洲电影天堂av| 黑人一区二区| 亚洲综合色视频| 正在播放欧美视频| 鲁大师成人一区二区三区| 亚洲精品偷拍| 久久久久久有精品国产| 午夜精品一区二区三区在线播放| 免费不卡欧美自拍视频| 久久精品在线| 国产欧美一区二区三区沐欲| 99精品国产高清一区二区 | 先锋影院在线亚洲| 亚洲免费中文| 欧美精品首页| 亚洲国产精品尤物yw在线观看 | 中国亚洲黄色| 亚洲一区精品在线| 欧美精品一区二区在线观看| 欧美福利视频在线观看| 国产一区二区三区在线免费观看| 一区二区三区视频免费在线观看| 99精品欧美一区二区三区| 老司机一区二区| 欧美大片一区二区三区| 亚洲国产成人tv| 免费观看30秒视频久久| 欧美 日韩 国产一区二区在线视频| 国产中文一区二区三区| 亚洲日本aⅴ片在线观看香蕉| 亚洲精品少妇30p| 欧美精品一区二区三区在线看午夜 | 欧美日本成人| 99香蕉国产精品偷在线观看| 一本久道久久综合狠狠爱| 欧美日韩国产免费观看| 99re6热在线精品视频播放速度| 亚洲一级免费视频| 国产精品毛片一区二区三区 | 一本色道综合亚洲| 欧美亚洲一区二区在线观看| 国产精品视频在线观看| 久久精品麻豆| 亚洲欧洲在线看| 亚洲素人一区二区| 国产伦精品一区二区三区免费| 亚洲欧美另类国产| 在线日韩av永久免费观看| 欧美福利电影在线观看| 亚洲精品综合久久中文字幕| 欧美日韩中文字幕在线| 欧美在线观看日本一区| 欧美成人精品一区二区三区| 亚洲性视频h| 国产一区二三区| 久久最新视频| 日韩午夜高潮| 久久久久天天天天| 99国产精品99久久久久久| 国产精品分类| 久久综合九色综合网站| av成人免费观看| 欧美激情国产精品| 午夜精品久久久久99热蜜桃导演| 红桃视频国产一区| 欧美日韩国产精品自在自线| 性久久久久久久久| 日韩视频免费观看高清完整版| 久久精品三级| 亚洲一区二区精品| 免费观看成人www动漫视频| 亚洲午夜av| 亚洲人成免费| 久久国产精品毛片| 亚洲最新在线| 激情综合色综合久久| 国产精品久久久久久模特| 免费视频一区| 久久在线观看视频| 香蕉精品999视频一区二区| 99国产精品自拍| 亚洲国产中文字幕在线观看| 久久人91精品久久久久久不卡| 亚洲免费在线播放| 中文欧美字幕免费|