2011-05-17 28 views
0

所以,我有一個長度爲200的不規則數組(稱爲名稱)。數組中的每個指針都指向一個不超過50個字符且沒有空格的字符串。我也有一個通過名爲inname的用戶輸入給出的字符串,長度爲50,inname將是存儲在名稱中的字符串之一。我需要找到一種方法來檢查我的衣衫襤褸的數組中的字符串,並查找具有與inname重疊的最大子字符串的字符串,不包括inname本身,因爲它將在文件中。如果沒有字符串有重疊,那麼我們打印出「不推薦」。 我一直在努力解決這個問題,現在好幾個小時了,有幫助嗎? O :) SO基本上,程序在數組中找到名稱最大的子字符串與inname重疊。 將編輯以提供其他信息,如果您需要它C中這個不規則數組/子串程序的幫助?

+1

這功課嗎? – 2011-05-17 03:33:41

+0

從某種意義上說,雖然它不是單純的作業,所以它不像我爲了成績或其他任何東西而轉向它。 – 2011-05-17 03:38:33

+0

你可以改變你的字符串數組的名稱,而不是暗示它包含一個函數指針列表? – aroth 2011-05-17 03:40:31

回答

2

這會不會導致你的最有效的方式找到重疊(動態編程是單向的 - 還有其他瘋狂的方法,如後綴樹),但它應該讓你開始:

首先,想想你將如何找到重疊的長度與兩個字符串的開始對齊。例如,發現這兩者之間的最長重疊:

programming 
ungrammatical 

在這種情況下,只有一個m重疊 - 1.

的長度後來想想你會如何「換擋」的字符串,當他們排列不同時尋找重疊。 (不要實際改變字符串:只是改變你如何循環來比較它們。)這兩者之間有什麼重疊?

programming 
ungrammatical 

想想如何看待所有可能的路線。如果你跟蹤的是你找到的最長的一條,那麼你有兩個特定字符串之間的最長對齊。

之後,繼續檢查所有不同的字符串。跟蹤最匹配的那個,再次,一旦你看了所有這些,你就有了答案。