NOIP2007 字串展開

2021-07-10 20:51:03 字數 1828 閱讀 1962

.字串的展開在初賽普及組的「閱讀程式寫結果」的問題中,我們曾給出乙個字串展開的例子:如果在輸入的字串中,含有類似於「d-h」或「4-8」的子串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母或數字串替代其中的減號,即,將上面兩個子串分別輸出為「defgh」和「45678」。在本題中,我們通過增加一些引數的設定,使字串的展開更為靈活。具體約定如下:(1)遇到下面的情況需要做字串的展開:在輸入的字串中,出現了減號「-」,減號兩側

同為小寫字母或同為數字,且按照 ascii 碼的順序,減號右邊的字元嚴格大於左邊的字元。

(2)          引數 p1:展開方式。p1=1 時,對於字母子串,填充小寫字母;p1=2 時,對於字母子串,

填充大寫字母。這兩種情況下數字子串的填充方式相同。p1=3 時,不論是字母子串還是數字子串,

都用與要填充的字母個數相同的星號「*」來填充。

(3)          引數 p2:填充字元的重複個數。p2=k 表示同乙個字元要連續填充 k 個。例如,當 p2=3 時,子串「d-h」應擴充套件為「deeefffgggh」。減號兩側的字元不變。

(4)          引數 p3:是否改為逆序:p3=1 表示維持原有順序,p3=2 表示採用逆序輸出,注意這時仍然不包括減號兩端的字元。例如當 p1=1、p2=2、p3=2 時,子串「d-h」應擴充套件為「dggffeeh」。

(5)          如果減號右邊的字元恰好是左邊字元的後繼,只刪除中間的減號,例如:「d-e」應輸出為「de」,「3-4」應輸出為「34」。如果減號右邊的字元按照 ascii 碼的順序小於或等於左邊字元,

輸出時,要保留中間的減號,例如:「d-d」應輸出為「d-d」,「3-1」應輸出為「3-1」。

輸入檔案expand.in包括兩行:

第 1 行為用空格隔開的 3 個正整數,依次表示引數 p1,p2,p3。

第 2 行為一行字串,僅由數字、小寫字母和減號「-」組成。行首和行末均無空格。

【輸出】

輸出檔案expand.out只有一行,為展開後的字串。

expand.in

expand.out

1 2 1

abcs-w1234-9s-4zz

abcsttuuvvw1234556677889s-4zz

expand.in

expand.out

2 3 2 a-d-d

acccbbbd-d

expand.in

expand.out

3 4 2 di-jkstra2-6

dijkstra2************6

40%的資料滿足:字串長度不超過 5

100%的資料滿足:1<=p1<=3, 1<=p2<=8, 1<=p3<=2。字串長度不超過 100

【思路】

這個題很容易忽略一些情況。例如:

1/ 『-『出現在開頭結尾

2/  多個『-『相連

3/ 數字與字母之間的』-『

注意這幾個問題程式就很明了了。如果不滿足展開要求則保留』-『。

【**】

#include#include

using

namespace

std;

string

s; int

p1,p2,p3;

intmain()

while(i!=n) }}

else}}

}}

}++i;

}return0;

}

noip2007 字串展開 (模擬)

1379字串的展開 accepted 標籤 模擬 noip提高組2007 在初賽普及組的 閱讀程式寫結果 的問題中,我們曾給出乙個字串展開的例子 如果在輸入的 字串中,含有類似於 d h 或者 4 8 的字串,我們就把它當作一種簡寫,輸出時,用連續 遞增的字母獲數字串替代其中的減號,即,將上面兩個子...

NOIP 2007 字串的展開

在初賽普及組的 閱讀程式寫結果 的問題中,我們曾給出乙個字串展開的例子 如果在輸入的字串中,含有類似於 d h 或 4 8 的子串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母或數字串替代其中的減號,即,將上面兩個子串分別輸出為 defgh 和 45678 在本題中,我們通過增加一些引數的設定,...

noip2007 字串的展開

開始做noip的套題。做完這道題想把它記下來。題目不難,模擬即可,考察的是字串的處理。本題真正值得注意的是全面考慮問題,這也是noip模擬題重點考察的內容。包括noip 2003 偵探推理。這兩道題都是模擬,但是特判的情況很多。以本題為例,我沒有考慮 兩個 的情況,在開頭 的情況,和 字母 數字 數...