《演算法筆記》codeup 100000580 D

2021-10-06 23:26:17 字數 1000 閱讀 1961

先通過字串匹配演算法找到模式在文字**現的位置,然後遍歷文字,在非匹配位置將文字直接賦值到輸出字元陣列,在匹配位置將整個替換字元賦值到輸出字元陣列,然後文字字串跳過模式長度繼續遍歷。

#include #include #include #include using namespace std;

int bf3(char txt, char pat, int match)

else if(txt[i - pat_len - 1] == ' ') // 模式指標重新指向模式首位

}} else }

return k;

}void replace(char txt, char re, char output, int match, int match_num, int pat_len, int re_len)

} // 如果有匹配位置

else if(match_num > 0)

i += pat_len; // txt指標前移pat的長度

j++; // match陣列指向下一位,元素為下乙個匹配位置

k += re_len; // output指標前移re的長度

}else

} output[k] = '\0'; }}

int main()

return 0;

}

還是要注意陣列不要越界,這題就有幾處指標回跳太多導致陣列下標為負。

這種多組輸入的題目要記得重置在讀資料迴圈前宣告的資料。

看了別人的**,還是用「依次獲取每個單詞,通過strcmp比較,匹配的就替換,不匹配的就輸出文字」這個思路比較好。

吐槽:vscode的除錯挺好用。

寫的**還是這麼冗長……

《演算法筆記》codeup 5 4 A

時間限制 1 sec 記憶體限制 32 mb 提交 521 解決 186 提交 狀態 討論版 命題人 外部匯入 輸入乙個整數n 2 n 10000 要求輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數,如果沒有則輸出 1。輸入有多組資料。每組一行,輸入n。輸出所有從1到這個整數之間 不...

《演算法筆記》codeup 5 5 A

時間限制 1 sec 記憶體限制 32 mb 提交 353 解決 242 提交 狀態 討論版 命題人 外部匯入 求1 n內的完數,所謂的完數是這樣的數,它的所有因子相加等於它自身,比如6有3個因子1,2,3,1 2 3 6,那麼6是完數。即完數是等於其所有因子相加和的數。測試資料有多組,輸入n,n資...

演算法筆記 Codeup 100000567A

題目要求 求一元二次方程ax2 bx c 0的根,三個係數a,b,c由鍵盤輸入,且a不能為0,但不保證b2 4ac 0。程式中所涉及的變數均為double型別。要求輸入 以空格分隔的一元二次方程的三個係數,雙精度double型別 樣例1 2 3要求輸出 分行輸出兩個根如下 注意末尾的換行 r1 第乙...