当前位置:   article > 正文

字节跳动游戏测开——遇到的题目_游戏平面测试题

游戏平面测试题

描述: 
给定一系列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。结束内层循环后,按照题目的格式输出。

  1. #include<iostream>
  2. using namespace std;
  3. int main() {
  4. int left_x,left_y, right_x,right_y;
  5. int x, y;
  6. while (1) {
  7. cin >> x >> y;
  8. if (x == 0 && y == 0) break;
  9. left_x = right_x = x;
  10. left_y = right_y = y;
  11. while (cin >> x >> y) {
  12. if (x == 0 && y == 0) break;
  13. if (x<left_x) left_x = x;
  14. if (x>right_x) right_x = x;
  15. if (y<left_y) left_y = y;
  16. if (y>right_y) right_y = y;
  17. }
  18. printf("%d %d %d %d\n", left_x, left_y, right_x, right_y);
  19. }
  20. return 0;
  21. }

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/919102
推荐阅读
相关标签
  

闽ICP备14008679号