2011年10月15日 星期六

迴文

內容 :

  迴文是運用相同詞彙、相反順序組合而成的語句,是一種修辭法,也有人把它當做文字遊戲。
  一個迴文可以是一個句子:「上海自來水來自海上」;也可以分為上下兩句:「人人為我,我為人人。」甚至可以是一首詩:

枯眼望遙山隔水,往來曾見幾心知。
壺空怕酌一杯酒,筆下難成和韻詩。
迷路阻人離別久,訊音無雁寄回遲。
孤燈夜守長寥寂,夫憶妻兮父憶兒。
兒憶父兮妻憶夫,寂寥長守夜燈孤。
遲回寄雁無音訊,久別離人阻路迷。
詩韻和成難下筆,酒杯一酌怕空壺。
知心幾見曾來往,水隔山遙望眼枯。


輸入說明 :
  第一行有一個整數 T,代表接下來有幾組測試資料。

  每一組測試資料有一個字串,字串是由小寫的英文字母所組成,每個字串的長度不會超過 100。


輸出說明 :
對每筆測試資料判斷是不是迴文 (字串正著讀和反著讀是否一樣) :如果是的話就輸出 “yes”,否則就輸出 “no”。

範例輸入 :
3
abcba
abba
abc

範例輸出 :
yes
yes
no

出處 :
2010 NPSC 國中組初賽 (管理:pcshic)

3 則留言:

  1. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, N
    For i = 1 To N
    Line Input #1, X
    If Check(X) = True Then Print #2, "yes" Else Print #2, "no"
    Next i

    Close #2
    Close #1
    End
    End Sub

    Function Check(A) As Boolean
    P = True
    For i = 1 To (Len(A)) \ 2
    If Mid(A, i, 1) <> Mid(A, Len(A) - i + 1, 1) Then P = fasle
    Next i

    Check = P
    End Function

    回覆刪除
  2. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, t
    For i = 1 To t
    Input #1, n
    If Len(n) Mod 2 = 0 Then m = Int(Len(n) / 2) Else m = Int(Len(n) / 2) + 1
    If Run(n, m) = 0 Then Print #2, "yes" Else Print #2, "no"
    Next
    Close
    Close
    End
    End Sub

    Function Run(n, m)
    Print m
    L = Left(n, m)
    r = Right(n, m)
    For i = 1 To Len(r): nr = Mid(r, i, 1) & nr: Next
    r = nr
    If L = r Then Run = 0 Else Run = 1
    End Function

    回覆刪除
  3. 佑好,
    1程式ok。
    2函數檢查地方,一旦檢查到不合的地方,除了設定false之外,還是加上exit for,加快一些些速度。

    arro好,
    1程式ok。
    2函數傳回值的地方設計一下,是不是就不用再一次的if判斷呢。(直接傳回yes,no)

    回覆刪除