中二少女與字串
第一次寫字典樹 參照了別人的寫法,下面**是自己所寫。
此題運用字典樹
因為此題要計算不重複的所有好串個數運用字典樹,每次新建乙個節點就res++ 當遇到相同的好串的時候一定不會新建
節點的。
建立乙個結構體node 裡面是26個相同的node節點next 分別對應著a~z26個字母
首先建立乙個空樹 當後繼節點next[i] 為空時 說明這個節點的串還未找到
在輸入待測字串和壞串最大長度之後,求出字串的長度然後依次從第乙個字母開始遍歷陣列
每次遍歷的結束條件是壞字母個數大於k或者到達字串結束處
每次新建節點時res++(將res設為全域性變數) 最後就可以輸出總數
字典樹時間複雜度:它的插入和查詢複雜度都為o(len),len為單詞(字首)長度
空間複雜度為o(26^n)這也太大了
#include#include#define n 4000000
struct node
;node tree[n];
int t,len,res,k; char num[26]; char s[1600]; char *str;
int id;
node* createnewid()
void find(node* now,char* str,int count)
else
}int main()
printf("%d\n",res);
}return 0;
}
uestc oj 1690 最少花費
最少花費 其實這個題目跟我要長高很像的,都是需要用單調佇列優化dp來解決的 只是這個題目多了乙個條件山與山之間的高度差不能超過k 狀態規劃方程 dp i x min dp i 1 y a abs x y hill i x 2 也是分高於前一座山還是低於前一座山來進行計算的 只是在佇列node裡面要加...
careercup 高等難度 18 2
18.2 編寫乙個方法,洗一副牌。要求做到完美洗牌,換言之,這幅牌52!種排列組合出現的概率相同。假設給定乙個完美的隨機發生器。解法 假定有個陣列,含有n個元素,類似如下 1 2 3 4 5 利用簡單構造法,我們不妨先問自己,假定有個方法shuffle 對n 1個元素有效,我們可以用它來打亂n個元素...
uestc oj 1685 我要長高
這是一道動態規劃的dp問題 但是明顯需要o n 3 的時間複雜度 顯然需要進行優化,並且有明顯的可以進行單調佇列優化的特徵,在本次確定高度之後,總能在前一次當中尋找到乙個最優解。最優解當然是由上一次的積累量 本次積累量 其中上一次的積累量與本次的積累量之間無關聯 就是說dp i 1 k 的積累量只是...