面試題:城市面積

題目:有一個城市需要修建,給你N個民居的座標X、Y,問把這麼多民居全部包進城市的話,城市所需最小面積是多少(城市爲平行於座標軸的正方形)

輸入:

  • 第一行爲N,表示民居數目(1=<M=<1000)
  • 下面爲N行,每行兩個數字Xi,Yi,表示該居民的座標(-le9=<xi,yi=<1e9)

輸出:

  • 城市所需的最小面積

樣例輸入:

2
0 0
2 2

樣例輸出:

4

代碼:

第一行#define _CRT_SECURE_NO_WARNINGS主要是爲了解決:error C4996: 'scanf'錯誤 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;
#define INF 03xffffff

struct node
{
	long long x, y;
}d[2000];
int main()
{
	//城市的數目
	int n;
	while (scanf("%d", &n) != EOF)
	{
		int i;
		memset(d,0,sizeof(d));
		//記錄最大橫座標,最大縱座標,最小橫座標,最小縱座標
		long long mx1 = 0, my2 = 0, kx1 = 0, ky2 = 0;
		for (i = 0; i < n; i++)
		{
			scanf("%lld%lld", &d[i].x, &d[i].y);
			if (d[mx1].x < d[i].x)
				mx1 = i;
			if (d[my2].y < d[i].y)
				my2 = i;
			if (d[kx1].x > d[i].x)
				kx1 = i;
			if (d[ky2].y > d[i].y)
				ky2 = i;
		}
		long long c;
		//哪個邊距大,就以哪個爲邊長建立城市
		if (d[mx1].x-d[kx1].x>d[my2].y-d[ky2].y)
			c = (d[mx1].x - d[kx1].x)* (d[mx1].x - d[kx1].x);
		else
			c = (d[my2].y - d[ky2].y)*(d[my2].y - d[ky2].y);
		printf("%lld\n",c);
	}
	return 0;
}

代碼參考鏈接:

https://blog.csdn.net/zl_666/article/details/50529085

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章