題目描述:
下圖中,每個方塊代表一個像素,每個像素用其行號和列號表示,但可以發現,這種表示不是最簡的,其實只需要存儲 6 個藍色的關鍵點即可,它們是線段的起點、拐點、終點,而剩下 4 個點是冗余的。現在,請根據輸入的包含有冗余數據的多段線坐標列表,輸出其最簡化的結果。
輸入描述:
2 8 3 7 3 6 3 5 4 4 5 3 6 2 7 3 8 4 7 5
1、所有數字以空格分隔,每兩個數字一組,第一個數字是行號,第二個數字是列號;
2、行號和列號范圍為[0,64),用例輸入保證不會越界,考生不必檢查;
3、輸入數據至少包含兩個坐標點。
輸出描述:
2 8 3 7 3 5 6 2 8 4 7 5
壓縮后的最簡化坐標列表,和輸入數據的格式相同。
特別注意:輸出的坐標相對順序不能變化。
示例1:
輸入
2 8 3 7 3 6 3 5 4 4 5 3 6 2 7 3 8 4 7 5
輸出
2 8 3 7 3 5 6 2 8 4 7 5
說明:
如上圖所示,6 個藍色像素的坐標依次是(2,8)、(3,7)、(3,5)、(6,2)、(8,4)、(7,5)。將他們按順序出即可。
C++源碼: