「頂嵌杯」決賽第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星球的居民有點懶,不願意費力思考。他們更喜...