最小包圍矩形
阿新 • • 發佈:2018-07-14
給定 style 小包 can std ron argv 坐標軸 內容
題目內容:
給定一組二維坐標,表示直角坐標系內的一個多邊形的連續的頂點的坐標序列。計算能包圍這個多邊形的平行於坐標軸的最小矩形,輸出它的左下角和右上角的坐標。
輸入格式:
第一行是一個正整數n表示頂點的數量,第二行是n組整數,依次表示每個頂點坐標的x和y值。
輸出格式:
四個整數,依次表示所計算的矩形的左下角的坐標的x、y值和右上角坐標的x、y值。輸出最後帶有回車換行。
輸入樣例:
5
1 1 1 4 3 7 4 4 4 1
輸出樣例:
1 1 4 7
1 #include <stdio.h> 2 3 typedef struct _dot { 4 intx; 5 int y; 6 } Dot; 7 8 int main(int argc, char const *argv[]) 9 { 10 Dot left_down, right_up; 11 left_down = right_up = (Dot){0,0}; 12 13 Dot p; 14 int n; 15 scanf("%d", &n); 16 17 for ( int i = 0; i < n; i++ ) { 18 scanf("%d %d", &p.x, &p.y);19 if ( left_down.x || left_down.y || right_up.x || right_up.y ) { 20 if ( p.x < left_down.x ) { 21 left_down.x = p.x; 22 } else if ( p.x > right_up.x ) { 23 right_up.x = p.x; 24 } 25 if ( p.y < left_down.y ) {26 left_down.y = p.y; 27 } else if ( p.y > right_up.y ) { 28 right_up.y = p.y; 29 } 30 } else { 31 left_down = p; 32 right_up = p; 33 } 34 } 35 printf("%d %d %d %d\n", left_down.x, left_down.y, right_up.x, right_up.y); 36 return 0; 37 }
最小包圍矩形