「頂嵌杯」決賽第1題公布

2021-05-23 10:31:55 字數 1911 閱讀 8405

「頂嵌杯」決賽第1題公布

題目名稱:根據關鍵字進行字串拷貝

description

把源字串拷貝到目的字串,如果指定關鍵字,則以該關鍵字結束(不包括關鍵字本身),如果拷貝失敗,則得到空串。

具體要求:實現如下函式原型safestrcpy2keyword(),並在**中呼叫該函式實現上述功能。該函式的實現要考慮各種可能的引數取值,以確保程式不出現崩潰。

int safestrcpy2keyword(char* pdestbuffer,       //拷貝的目的地位址

char* psourcestring,       //拷貝的源位址

int ndestbuffersize, //拷貝的目的地緩衝區長度

char* szkeyword);  //指定關鍵字串

返回值:所拷貝的字串長度。如果拷貝失敗,則返回0。

input

輸入包含多組資料,以eof結束

每組資料第一行為不含空格的源字串,長度小於256;接下來的一行或多行都是關鍵字串(長度小於16),一直到end結束。「null」表示關鍵字串為空,此時輸出的拷貝後的長度應為0,拷貝後的字串為空串(也用」null」表示,見下文)。

output

對於每組資料輸出拷貝的長度和拷貝後的目的字串,以空格分隔。如果該目的字串為空,則用」null」表示。

sample input

/home/tony/work_server/1/rtest/relayer.out//t

/1/r

.null

endsample output

0 null

5 /home

22 /home/tony/work_server

38 /home/tony/work_server/1/rtest/relayer

0 null

source  (參考**)

#include

#include

#define max_text_len 258

#define max_pat_len 18

int kmpsinglematch(char* ptext,char* ppat)

;if(null == ptext || null == ppat) return 0;

patlen = strlen(ppat);

if(0 == patlen) return 0;

for(i = 1;i < patlen;++i)

textlen = strlen(ptext);

for(i = 0,k = 0;i < textlen;++i)

return -1;

}int safestrcpy2keyword(char* pdestbuffer,char* psourcestring,int ndestbuffersize,char* szkeyword)

srclen = strlen(psourcestring);

pos = kmpsinglematch(psourcestring,szkeyword);

if(-1 != pos) srclen = pos;

if(srclen >= ndestbuffersize)

pdestbuffer[srclen] = 0;

if(pdestbuffer == psourcestring) return srclen;

if(psourcestring > pdestbuffer)

else

return srclen;

}int main()

}return 0;

}注:該**來自參賽選手北京瑞星研發工程師曾劍傑,被「頂嵌杯」專家評審組公認為符合工程化的高質量**

POJ 3984 頂嵌杯決賽 B題

迷宮問題 time limit 1000ms memory limit 65536k total submissions 990 accepted 498 description 定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能...

微生物增殖,藍橋杯2023年第1題

微生物增殖 假設有兩種微生物x和y,x出生後每隔 3分鐘 一次 數目加倍 y出生後每隔 2分鐘 一次 數目加倍 乙個新出生的 x,半分鐘之後吃掉1個 y,且從此開始每隔 1分鐘吃掉1個 y。已知新出生的 x 10 y 89 求60 分鐘後y 的數目。若 x 10 y 90呢?本題的要求就是寫出這兩種...

藍橋杯 2023年C A組第1題 迷宮 列舉

一 題目 x星球的一處迷宮遊樂場建在某個小山坡上。它是由10x10相互連通的小房間組成的。房間的地板上寫著乙個很大的字母。我們假設玩家是面朝上坡的方向站立,則 l表示走到左邊的房間,r表示走到右邊的房間,u表示走到上坡方向的房間,d表示走到下坡方向的房間。x星球的居民有點懶,不願意費力思考。他們更喜...