面试题:城市面积

这是一道算法面试题,要求计算包围N个民居的最小正方形城市面积。给定每个民居的坐标,目标是找到最小面积的正方形以包含所有民居。输入包括民居数量和坐标,输出为城市最小面积。提供的代码中包含了防止特定警告的预处理指令,并引用了相关博客文章作为参考。
摘要由CSDN通过智能技术生成

题目:有一个城市需要修建,给你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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值