2012-11-21 43 views
-1

誰能幫助我組織這樣的功能(如一門功課我字謎程序管理):Ç查找字符串斜

1)我有一個字符串(一種文本文件)的陣列,其中

row[0] = "str1" row[1] = "str2"

2)每個串的長度是相同

3)輸入從stdin像abcd

我需要找到文字abcd位於對角線(從左到右並不重要,只需要一種算法),並用零替換找到的詞。 第一個字母可以在strchr找到,但如何正確前進並用零代替文本?任何人都可以給我任何線索嗎?

SOLUTION:

Tnx用於扼殺的方式。我發現了另一種解決方案,每條對角線都生成一條簡單的線條,然後我應用strstr找到匹配的位置。知道匹配的位置和匹配的字符串的長度使得能夠精確地檢測線陣列中的匹配單元的位置。

我用這樣的代碼(也許SMN會發現它很有用):

/* generating left-right diagonal string str */ 
    for(col = cols - len; col >= 0; col --, i = 0){ 
    /* where len is the length of searching string */ 

    while((col+i) < cols && i < rows){ 
    *(str + i) = res[i][col+i]; 
    i ++; 
    } 

    *(str + i) = '\0'; 

    //some match seq. 
    } 

我爲從左頂部電池(第一個字符串的開始)左,右斜持續頂單元(第一字符串的結尾) 。然後對左列進行相同的過程,所以結果算法將覆蓋所有字符串。

+4

人們通常不喜歡被要求爲你做功課。 –

+0

這是一個完整的填字遊戲(即:在一個正方形/矩形網格內沒有不允許的單元格)?我做了一些類似的事情,我寫了一組簡單的「is4Neighbour/is4DiagNeighbor/is8Neighbour」函數來確定一個單元是否有鄰居。然後,我遞歸創建一個所有對角線的列表,將它們轉換爲一維數組,然後在它們上調用strstr()函數。 – DevNull

+0

這是作業的一小部分,我不知道如何快速做到這一點,因爲填字遊戲可能很大,我不想爲我做這件事,但要知道如何正確地做到這一點。仔細讀 – NGix

回答

2

你可能希望有字符的2 dimentonal陣列如

​​

,如果你的第一個字母是grid[i][j]比對角下一個點是

grid[i+1][j+1] 

而且所以對於每個組合+1-1

1

找到第一個字母,讓我們說行[5]索引7(所以row[5][7])。 然後檢查row[6][8]是否是第二個字母;或row[4][6]row[4][8]row[6][6]。用第三個字母繼續,可能是遞增的。