在一些問題中,如果適當選擇迴圈變數,將會降低程式的複雜度,例如判斷子串的問題:
判斷字串 s 是不是 t的子串,有兩種方案
方案一
思路:對s中的元素遍歷,根據貪心的思想,搜尋t中第乙個該元素,若不存在,則說明s不是t的子串。注意,s中的元素在t中的相對位置必須保持不變,所以每一次搜尋時,應該從上一次搜尋到的位置處搜尋。
實現:搜尋可以用 cstring 中的strchr函式。
複雜度應該是o(
n2) o(n
2)
int is_sub(char *s,char *t)
else
}return
1;}
方案二
思路:對t中元素遍歷,並與s中當前待比較元素比較。
實現:用
i i
代表s中當前待比較元素的下標。
複雜度是o(
n)' role="presentation" style="position: relative;">o(n
)o(n
);
int is_sub(char *s,char *t)
return
0;}
常見降低圈複雜度方法
圈複雜度計算方式 圈複雜度 cc 判斷條件個數 1其中1代表函式本身的複雜度 關鍵字 if,else if,for,while,case,catch等。對if,if else,if else if for,switch while語句進行簡要說明 之後函式的圈複雜度是所有的語句判斷數加函式本身 常用...
如何降低SQL語句複雜度
sql語句複雜度的優化就是在結果正確的前提下,將複雜 難以維護的sql語句拆分成獨立 易懂的sql片段,當然也要充份利用索引,減少表描的i o次數,盡量避免表搜尋的發生。下面介紹降低sql語句複雜度的幾個建議 1 動態查詢語句 一些應用為了實現客戶端的靈活性,會根據使用者的選擇,動態拼出tsql語句...
複雜度 程式開發中降低複雜度的核心方法
降低複雜度的核心方法主要三個步驟 第一步,暴力解法。在沒有任何時間 空間約束下,完成 任務的開發。沒有太多的套路,只要圍繞你面臨的問題出發,大膽發揮想象去嘗試解決即 無效操作處理。將 中的無效計算 無效儲存剔除,降低時間或空間複雜度。需要學會並掌握遞迴 二分法 排序演算法 動態規劃等常用的演算法思維...