滴,集訓第五天打卡。
今天是紫書第七章訓練2,感覺難度很大呀...
a和e是迭代深搜法,c是揹包我首a的哈哈哈哈後續更新~
這裡貼e題..
題目大意:給定乙個數n,讓你求從1至少要做多少次乘除才可以從 x 得到 x^n。
思路:從小到大列舉深度上限,剪枝:(當每次取最大的兩個數相加仍然小於n時要剪枝 。因為以最快的方式增長的話其指數是按照2的冪次增加的,所以當前序列最大的數乘以
2^(maxd-d)
之後仍小於
n,則剪枝 。)
#includeint vis[2010];
int flag,deep,n;
void dfs(int pos)
t=vis[pos]-vis[i];
if(t>0 && t<2000) //除法
} } int main()
printf("%d\n",deep-1);
} return 0;
}
當然也可以打表做
#include int ans=;
int main()
小結 A IDA 迭代深搜
在dfs中,如果答案的深度很小但是卻很寬,而且bfs還不一定好做的情況下,我們就綜合bfs的優點,結合dfs的思想,進行有限制的dfs。在這裡a ida 和迭代深搜都是對dfs的優化,因此放到一塊小結。a 的概念主意在於估計函式,f n g n h n f n 是估計函式,g n 是n節點的當前代價...
acm基礎1 深搜與寬搜
deep first search void dfs adjlist adj,int v,int visited adj is a adjlist,v is the no.of first point,visited is a assistant array int i struct edgenod...
CSU2087 迭代深搜dfs
思路 dfs,用vowel記錄連續的母音字母,用consonant記錄連續的子音字母,深搜字串的位置 str i 的i 用cnt存悲劇詞的個數,最後用t判斷字串中是否含 l include include include include includeusing namespace std stri...