直角坐标系
【问题描述】
给你 n 个平面上的点,请你绘制出一个直角坐标系。对于原点,用’+'表示(除去 n 个点的位置);对于 y 坐标轴,用
'|‘表示(除去原点和 n 个点的位置);对于 x 坐标轴,用’-'表示(除去原点和 n 个点的位置);对
于 n 个平面上的点,用’*‘表示;所有其他点,用’.'表示。为了更好地理解,请参照样例。
【输入格式】
第一行包括一个正整数 n。
接下来 n 行,每行两个整数 x, y,表示点的坐标。
【输出格式】
一个直角坐标系。其中,第一行的 y 坐标为所有点的 y 坐标和 0 中的最大值;最后一行的 y 坐
标为所有点的 y 坐标和 0 中的最小值;第一列的 x 坐标为所有点的 x 坐标和 0 中的最小值;最后一
列 x 坐标为所有点的 x 坐标和 0 中的最大值。详见样例。
【输入样例 1】8-10 5-7 3-4 2-9 4 0 1 6 -13 0 8 -3【输出样例 1】*.........|.........*........|...........*......|..............*...|..................*........----------+--*-----..........|.....*............|..................|.......*【输入样例 2】51 2 5 3 2 1 5 5 3 3【输出样例 2】|....*|.....|..*.*|*....|.*...+-----
【数据规模】对于 30%的数据,1<=x<=100,1<=y<=100对于 100%的数据,1<=n<=250, 且 x,y 的绝对值都不超过 100,所有的点两两不同。
CODE
#include using namespace std;const int P=105;int xmax=P,xmin=P,ymax=P,ymin=P,n;bool t[210][210];int main(){scanf("%d",&n);int x,y,i,j;while(n--){scanf("%d%d",&x,&y);x+=P,y+=P;t[y][x]=1;xmax=max(xmax,x);xmin=min(xmin,x);ymax=max(ymax,y);ymin=min(ymin,y);}for(i=ymax;i>=ymin;i--){for(j=xmin;j<=xmax;j++){if(t[i][j]) putchar('*');else if(i==P&&j==P) putchar('+');else if(i==P) putchar('-');else if(j==P) putchar('|');else putchar('.');}putchar('\n');}return 0;}