2012年3月26日 星期一

文字抄寫

內容 :
從機器中,不斷地出現4個英文字母的單字,現在要你抄寫下來,
倘若這個單字已經出現過,則會使用編號上的號碼直接書寫
倘若這個單字沒有出現過,則會賦予單字一個新的號碼


每組新的測資,代表不同事件,請勿將其納入新的號碼
輸入說明 :
每組輸入的第一行 , 有一個數字 N (1≦N≦105),接下來會有瘋狂科學家講出的N行單字,每行由小寫字母a到z所構成的4字單字.

輸出說明 :
若這個字串之前已經出現過,則輸出號碼,若沒有則輸出它將被編寫的號碼.
範例輸入 :
5 
eine 
isis 
zwei 
drei 
zwei
範例輸出 :
New! 1 
New! 2 
New! 3 
New! 4 
Old! 3

3 則留言:

  1. Private Sub Form_Load()
    Dim x As Double
    Dim z(100000) As String
    Dim a As Boolean
    a = True
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, x
    For i = 1 To x
    a = True
    Input #1, y
    z(i) = y
    For j = 1 To i - 1
    If y = z(j) Then
    a = False
    Print #2, "Old!" & j
    Exit For
    End If
    Next
    If a = True Then Print #2, "New!" & i
    Next
    Close
    Close
    End
    End Sub

    回覆刪除
  2. 小冰好,
    重複的字沒有新的號碼,那麼,再來的號碼會少一號嗎?
    題目中是沒有說要不要跳過。
    如果當成跳過的話,那你的程式就算是對的。
    小心題意弄錯的話,花再多時間也不會對哦。

    回覆刪除
  3. Private Sub Form_Load()
    Dim yan() As String
    Dim tf As Boolean
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, n
    ReDim yan(n)
    For i = 1 To Val(n)
    Input #1, yan(i)
    Next i
    For i = 1 To Val(n)
    tf = False
    For j = 1 To i
    If i <> j Then
    If yan(i) = yan(j) Then
    Print #2, "Old! " & j
    tf = True
    End If
    End If
    Next j
    If tf = False Then Print #2, "New! " & i
    Next i
    Close #2
    Close #1
    End
    End Sub

    回覆刪除