c語言讀圖
我有一張80*50的圖,圖中有很多由****組成的多邊形,我如何用c語言判斷圖形是否為矩形?好像先把圖用getchar() 讀到一個80*50的數組中,然後判斷,謝謝幫助。
最佳回答:
你說的是不是以*字符組成的圖阿?
這個就是c語言的算法問題了,用道德是與的遍歷,查找坐標范圍內的*字符是不是組成了一個矩形區域。你可以首先確定一個*字符A的位置,這個位置是圖中的一個最左上方的一個點,從A這個點在橫向延伸直到碰不到*為止,記錄這個點有多少個B,然後A這個點縱向延伸訪問,直到碰到不是*號的點C,記錄訪問過的點數目,然後從橫縱的最大的那個點分別向縱橫向延伸,直到坐標B,C的位置,如果在這個過程中沒有碰到不是*的點那麼這個就是要找的矩形了;另外你還可以在橫縱B C范圍內來循環段在這個最大矩形內的其他的小的矩形。
還有一種較為簡單的方式,你可以把是*字符的位置全部變成1,把不是*字符的全部變成0;然後把這個圖中能夠形成的所有的矩形進行枚舉,然後與原圖進行與&運算,如果所得結果是1,那麼就知道這個枚舉的矩形便是找到的矩形。這個方式的缺點是需要枚舉矩形區域內的所有可能的矩形,這個過程可以使用循環的方式進行枚舉,能夠枚舉的矩形數量隨這個圖的寬長成乘數的方式增長,如果圖的長不變寬加一那麼就需要原長的數個矩形(原長這麼多的點與新增加的這個點組成新的矩形,這種可能是原長點數個)