《資料結構與演算法 尺取法》

2021-09-10 06:06:41 字數 786 閱讀 8984

51nod_1127 最短的包含字串

題目

給出乙個字串,求該字串的乙個子串s,s包含a-z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a-z中的全部字母,則輸出no solution。

輸入

第1行,1個字串。字串的長度 <= 100000。

輸出

輸出包含a-z的最短子串s的長度。如果沒有符合條件的子串,則輸出no solution。

樣例輸入

bvcabcdeffghijklmmnopqrstuvwxzyzz
樣例輸出

28
分析

尺取法,定起點,不斷加大終點,直至條件滿足,條件滿足後,將起點的值加大一,然後繼續重複。具體看程式

c++程式

#include#includeusing namespace std;

const int inf=100000;

int a[26];

bool ok()

int main()

if(ans==inf)

cout<<"no solution"

cout

}

演算法 尺取法

我們先來介紹一下尺取法。尺取法,顧名思義,像尺子一樣,一塊一塊的擷取。題目翻譯 給定長度為n的數列整數a0,a1,a2,a3 an 1以及整數s。求出綜合不小於s的連續子串行的長度的最小值。如果解不存在,則輸出0。限制條件 100s 10 8 這裡我們拿第一組測試資料舉例子,即 n 10,s 15,...

雙指標演算法(尺取法)

指向兩個序列 指向乙個序列 維護一段區間,就像快排一樣 一般的樣子 for i 0,j 0 i n i 最核心的性質 能優化到 o n 可能是2n,3n等等 運用了某些單調的性質 模板就是為了節省思考的時間 輸出字串 for int i 0 i strlen str i 樸素做法 for int i...

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...