字节跳动游戏测开——遇到的题目

描述: 
给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内。长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内。 
运行时间限制: 10 Sec 
内存限制: 128 MByte 
输入: 
测试输入包含若干测试用例,每个测试用例由一系列坐标组成,每对坐标(x y) 占一行,其中|x|和|y|小于 1000;一对(0,0) 坐标标志着一个测试用例的结束。注意(0, 0)不作为任何一个测试用例里面的点。一个没有点的测试用例标志着整个输入的结束。 
输出: 
对每个测试用例,在1行内输出2对整数,其间用一个空格隔开。第1对整数是长方形框左下角的坐标,第2对整数是长方形框右上角的坐标。 
如果只是一个点或者一条线,不输出。例如: 
12 34 
0 0 
只是一个点,不是长方形,不输出。 
样例输入: 
12 56 
23 56 
13 10 
0 0 
12 34 
0 0 
0 0 
样例输出: 
12 10 23 56

这道题没有给定测试case的数量,所以要用while(1){...}语句一直接受不同的输入数据。而且要注意,变量的声明在外面,但是初始化要在每次输入的内部,这样才不会影响到每个case。首先一个while(1){...}语句来接受不同的cases,在循环体内部首先要考察,当一开始输入的是0 0直接表示测试用例结束,然后进行循环while(cin>>x>>y),接受每组case中的不同坐标,当然结束仍然以0 0。结束内层循环后,按照题目的格式输出。

#include<iostream>
using namespace std;
int main() {
	int left_x,left_y, right_x,right_y;
	int x, y;
	while (1) {
		cin >> x >> y;
		if (x == 0 && y == 0)    break;
		left_x = right_x = x;
		left_y = right_y = y;
		while (cin >> x >> y) {
			if (x == 0 && y == 0)    break;
			if (x<left_x)    left_x = x;
			if (x>right_x)    right_x = x;
			if (y<left_y)    left_y = y;
			if (y>right_y)    right_y = y;
		}
		printf("%d %d %d %d\n", left_x, left_y, right_x, right_y);
	}
	return 0;
}

总结:题目真的很简单,不过第一次做笔试题真的弄了很久,完全不知道哪有问题!就看着通过case 0.00%!我晕!后来和别人讨论了之后才晓得,笔试题输入输出的写法也是一种能力的考察!所以还是不要抱怨把!好好积累一下!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值