時間限制: 1 sec
記憶體限制: 128 mb
對於乙個字串 s,定義乙個函式 s(x),表示 s 中有多少個子串 x。現在給定 s(a),s(b),s(ab),s(ba)的值,求滿足這 4 個值的字串 s,如果有多個滿足條件的字串,輸出字典序最小的。
輸入乙個 t(t ≤ 50)表示 t 組資料。
對於每組資料按順序輸入用空格分開的四個整數,分別表示 s(a),s(b),s(ab),s(ba) (0 ≤ s(a), s(b), s(ab), s(ba) ≤ 10^6 ,s(a) + s(b) >0)的值。
對於每組資料輸出一行,包含乙個字串表示結果,如果無解則輸出-1。
22 2 1 1
4 3 7 1
abba-1
這道題其實只要找到規律基本上都可以做出來。假設輸入的四個數分別為a,b,c,d,我們可以分別討論a>d,c==d,c
當c>d時,我們可以發現以a開頭例如abab字典序是最小的,當有多餘的a,b的時候我們可以往裡面插,如aababb,這種情況一定是以a開頭,以b結束。
當c==d時,我們可以分a>c和a==c兩種情況討論。當a>c時,我們可以看出以a開頭以a結尾可以構成c==d這種情況,例如abababa,當有a,b有剩餘的時候可以往裡面插,例如aaabababba;當a==c時,我們可以看出上種情況其實a的個數是多餘b的,所以以b開頭以a結尾可以構成c==d這種情況,例如bababab,當有b有剩餘的時候可以往裡面插,例如babababbb。
當c0和c==0兩種情況,當c>0時,我們可以知道當以b開頭以a結尾可以滿足cababbba;至於c==0的時候,因為c
#include int main()
if (a + b <= c + d || c - d > 1 || d - c > 1)
if (a && b && !c && !d)
if (c > d)
else if (c == d)
for (i = 0; i < c; i++)
printf("ba");
for (i = 0;i < b - c; i++)
printf("b");
printf("\n");
}else if(c < d)
printf("ba");
for (i = 0; i < a - d; i++)
printf("a");
for (i = 0; i < d - 2; i++)
printf("ba");
for (i = 0; i < b - c; i++)
printf("b");
printf("a\n");}}
return 0;
}
尋找字串
某天,蒜頭君和花椰妹在公園裡散步,走著走著,我的天 他們各自都撿到了一串漂亮的字串,然而蒜頭君好奇心比較重,他想知道自己的字串在花椰妹的字串 現了多少次,例如花椰妹的字串為abababa,蒜頭君的字串為aba,那麼蒜頭君的字串在花椰妹的字串 現了3次。蒜頭君一向比較傲嬌,於是向你請教,你可以幫幫他麼...
尋找字串
描述 由鍵盤輸入兩個字串 假設第乙個字串必包含第二個字串,如第乙個字串為abcdef,第二個為cde,則cde包含在abcdef中 現要求程式設計輸出第二字串在第一行字串 現的位置。如果第二個字串在第乙個字串 現多次,則以最前出現的為準 輸入樣例 abcdefg de輸出樣例 4 include i...
CodeVS 1204 尋找字串位置
題目描述 description 給出字串a和字串b,保證b是a的乙個子串,請你輸出b在a中第一次出現的位置。輸入描述 input description 僅一行包含兩個字串a和b 輸出描述 output description 僅一行乙個整數 樣例輸入 sample input abcd bc 樣...