7-9 最長對稱子串 (25 分)
對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定is pat&tap symmetric?,最長對稱子串為s pat&tap s,於是你應該輸出11。
輸入在一行中給出長度不超過1000的非空字串。
在一行中輸出最長對稱子串的長度。
is pat&tap symmetric?
思路:對於乙個字串我們從中間向兩端去擴充套件並判斷是否對稱
分為兩種情況:
1.如果對稱子串是奇數,就以該字元為軸向兩邊擴充套件 找到乙個對稱的就+2最後更新最大值
2.如果對稱子串是偶數,那麼就以兩個字元為軸向兩邊擴充套件,找到對稱+2 並更新最大值
ac**:
#include#includeconst int maxn=1e6+10;
int main()
for(i=1;i=0&&ymax)
max=ans;
}printf("%d\n",max);
return 0;
}
//不得不說這兩個for真的太好了 乙個判斷奇數,另乙個判斷偶數。裡面再套乙個while,用來判斷前後兩個字元是否對稱相等
第二年的ac**(還有一種方法是馬拉車,有空再補吧):
#includeusing namespace std;
string str;
int odd(int s)
return 0;
}
7-10 古風排版 (25 分)
中國的古人寫文字,是從右向左豎向排版的。本題就請你編寫程式,把一段文字按古風排版。
輸入在第一行給出乙個正整數n(<100),是每一列的字元數。第二行給出乙個長度不超過1000的非空字串,以回車結束。
按古風格式排版給定的字串,每列n個字元(除了最後一列可能不足n個)。
this is a test case
asa t
st ih
e tsi
ce s
這題真的是水題,但是總是不能拿到全分...記得要用getchar()接受回車符
ac**
#include #include #include using namespace std;
string s;
char b[1002][1002];
int main()
}for(int i=0;icout<}
return 0;
}
1040 有幾個PAT 25 分
現給定字串,問一共可以形成多少個pat?輸入只有一行,包含乙個字串,長度不超過10 5 只包含p a t三種字母。在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。2 includeusing namespace std int countp ...
1040 有幾個PAT 25 分
現給定字串,問一共可以形成多少個pat?輸入格式 輸入只有一行,包含乙個字串,長度不超過10 5 只包含p a t三種字母。輸出格式 在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。輸入樣例 輸出樣例 2一開始的思路是以p為結點找每個p後面有...
1040 有幾個PAT 25分
思路分析一 此題如果直接暴力會超時,所以應該找到規律。通過觀察輸出結果其實就是對於乙個確定位置的a來說,其左邊p的個數乘以其右邊的t的個數。那麼接下來的工作就是統計確定位置a左邊的p的個數。可以設定乙個資料leftnump,記錄p的個數。如果當前位i是p,那麼leftnump i 否則,leftum...