標題:
d945: C. 小丹妮與英文單字
[打印本頁]
作者:
蔡昀修
時間:
2011-4-9 20:59
標題:
d945: C. 小丹妮與英文單字
內容 : 正體->简体
小丹妮的興趣是尋找一些有趣的英文單字,最近她想找的英文單字是左右對稱的,像是 noon、level 或 radar,這種類型的英文單字被稱為迴文。
不過,小丹妮發現左邊讀過去和右邊讀回來一樣的英文單字好像不太多,於是她的搜尋目標改成尋找包含迴文的英文單字,也就是切除英文單字的若干開頭或結尾字元後會是一個迴文,例如 career、musume 和 hollow。
小丹妮希望找到的英文單字裡面包含的迴文越長越好,但是她覺得用肉眼判斷單字中的迴文長度實在是太累了,所以想請你幫她寫一個程式做這件事情。
輸入說明 :
第一行有一個整數 T ,代表接下來有幾組測試資料。
每一組測試資料有一個字串,字串是由小寫的英文字母所組成,每個字串的長度不會超過 50000 。
輸出說明 :
對每筆測試資料輸出字串中最長的迴文長度。
範例輸入 :
若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取請參考 a001 的範例程式。4
radar
hollow
cat
enhance
範例輸出 :
5
4
1
1
作者:
a3218290
時間:
2011-4-16 20:52
作法作法XD
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char num[50001] ;
int ans ;
int n=0;
int Go(int x,int y,int now)
{
int i=0 ;
while(true)
{
i++ ;
if((y+i<=n-1)&& (x-i>=0) && num[y+i]==num[x-i])
{
now+=2 ;
}else
{
return now ;
break ;
} ;
}
}
int main()
{
int a ;
scanf("%d",&a) ;
for(int k=0;k<a;k++)
{
scanf("%s",num) ;
ans=0 ;
n=strlen(num);
for(int i=0;i<n;i++)
{
ans>?=Go(i,i,1) ;
if(i<n-1 && num[i+1]==num[i])
{
ans>?=Go(i,i+1,2) ;
}
}
printf("%d\n",ans) ;
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/)
Powered by Discuz! 7.2