bool sudomatric::huishuosearch(vector* point_buff)//回朔法給數獨填數
else if (v.size() == 1)
else}}
} }//cout << "##########################" << endl;
//showsudo();
if (isnullvalue() != 0)
for (int k = 0; k < v.size(); k++)
sudo_data[i][j] = 0;
point_buff->clear();
}else
}v.clear();
return 1;//k次搜尋都失敗,返回1}}
} }else }
bool sudomatric::isnullvalue()//檢測是否全部填完
} return 0;
}void sudomatric::writenumber(vector* v)//寫到一半,發現寫錯了,應該整個函式遞迴
else if (v->size() == 1)
else}}
} }//對所有非唯一值進行回朔填寫
if (isnullvalue() != 0) }
void sudomatric::showsudo()//顯示
cout << endl;
if (i == 3 || i == 6) cout << "---------------------" << endl; }}
void sudomatric::capturedata()//捕獲資料,可以手動輸入,也可以初始化賦值
}*/
//固定陣列
//可以通過找唯一值填完
/*u8 data[9][9] = ,
, ,, ,
, , ,
};*/
u8 data[9][9] = ,,,
,,,,
,};for (int i = 1; i < 10; i++) }}
void sudomatric::findposiablevalue(u8 i, u8 j,vector* v)//找出i,j單元格的可能值,1表示可能,0表示不可能
memset(num_p, 1, 10);//9個數都有可能
memset(conflict, 1, 10);
for (int m= 1; m < 10; m++)
if (sudo_data[i][m] != 0)
else
} /*else if (sudo_data[i][m] != 0 && num_p[sudo_data[i][m]] == 0)*/
} memset(conflict, 1, 10);
for (int m = 1; m < 10; m++)
if (sudo_data[m][j] != 0)
else
} /*else if (sudo_data[m][j] != 0 && num_p[sudo_data[m][j]] == 0)*/
} int x = ((i - 1) / 3) * 3 + 1;
int y = ((j - 1) / 3) * 3 + 1;
memset(conflict, 1, 10);
for (int m = 0; m < 3; m++)
else
}/*else if (sudo_data[x + m][y + n] != 0 && num_p[sudo_data[x + m][y + n]] == 0)*/
} }for (int m = 1; m < 10; m++) }}
int _tmain(int argc, _tchar* argv)
clock_t end_time = clock();
cout << "##########################" << endl;
sudo.showsudo();
cout << "running time is: " << static_cast(end_time - start_time) / clocks_per_sec * 1000 << "ms" << endl;//輸出執行時間
return r;
}
leetcode 數獨遊戲
第乙個問題 用程式實現數獨的出題,而不是答題。換句話說就是驗證給定的乙個數獨中的九宮格,該九宮格是否滿足數獨遊戲的規則。數獨遊戲的規則是什麼 每一行沒有重複。每一列沒有重複。每乙個3x3的小格中沒有重複。方法一 一次迭代法 class solution validate a board for in...
數獨遊戲解密
includeusing namespace std struct board board myboard int grid 9 9 void initgrid board board int pregrid board board bool maybe board board,int i,int ...
數獨遊戲(sudoku)演算法 回溯 剪枝
具體數獨遊戲是什麼,我就不介紹了,好像多餘了,你能來看這篇文章,說明你對數獨遊戲已經有了相當的了解了!還是入正題吧,今天先講解和發下用回溯 剪枝 求數獨遊戲,我也看了些回溯 剪枝求數獨的演算法,很惱火,既沒注釋,而且演算法沒有通用性。今天我給大家講的回溯 剪枝法,不僅可以用於解決數獨問題,而且還可以...