演算法 回溯法與具體問題

2021-07-11 16:44:47 字數 1119 閱讀 6415

回溯法

顧名思義,回溯--關鍵在於,追尋前乙個狀態。

什麼是追尋前乙個狀態?就是,在當前情況無法進行時,返回至前一步,選擇另一種可能,進行另一種嘗試,以達到遍歷所有情況的目的。

回溯法的經典應用–八皇后(n皇后)問題。

解法偽**如下:

如果(八行都已擺放完成)

如果(當前位置能擺放皇后)

否則否則

}

回溯法實戰–數獨

c/c++實現如下:

/*

數獨矩陣元素

exist 當前元素是否為初始化元素

num 當前元素值

*/struct node

;node matrix[9][9];

int i = 0;//row

int j = 0;//col

//查詢未填充元素

void search(void)

while (matrix[i][j].exist)

}}//填充當前元素

void insertvalue(int curnum)

//回溯至之前狀態

void back()

while (matrix[i][j].exist)

}}//判斷將填充值是否滿足填充條件

bool isnotinrow(int curnum)

}return

true;

}bool isnotincol(int curnum)

}return

true;

}bool isnotincube(int curnum)}}

return

true;

}/*回溯法解數獨問題*/

bool do(void)

search();

for (int curnum=1; curnum<=9; curnum++)

else

}else

}return

false;

}

注:本文僅做學習記錄之用,以便日後能溫故而知新,為己之師。

具體問題解決 分離指令碼

原文 具體問題解決 分離指令碼 有時候需要從乙個伺服器轉移資料庫到另乙個。如果打算一下子分離所有資料庫,那麼下面的指令碼就是有用了。生成分離指令碼 select distinct use master char 10 go char 10 alter database convert varchar...

具體問題解決 分離指令碼

有時候需要從乙個伺服器轉移資料庫到另乙個。如果打算一下子分離所有資料庫,那麼下面的指令碼就是有用了。生成分離指令碼 select distinct use master char 10 go char 10 alter database convert varchar 500 db name dat...

不良資產催收 具體問題具體分析

催收作為逾期不良資產的方式之一,在實際工作中會遇見很多困難,催收工作是一項複雜且需要工作人員耐心細緻,所以在催收時,往往要根據企業的逾期情況的不同來採取不同的策略,下面我們來一一介紹。一 還款意願和還款能力良好 客戶分析 這種情況下的逾期不會影響到貸款的安全,最終還是能收回來的,但對這類逾期信貸機構...