算法-百度真题 来自牛客网

度度熊有一张网格纸,但是纸上有一些点过的点,每个点都在网格点上,若把网格看成一个坐标轴平行于网格线的坐标系的话,每个点可以用一对整数x,y来表示。度度熊必须沿着网格线画一个正方形,使所有点在正方形的内部或者边界。然后把这个正方形剪下来。问剪掉正方形的最小面积是多少。 


自己写的程序如下:

#include<iostream>
using namespace std;

int max(int x,int y)
{
    return x>y?x:y;  
}
int min(int x,int y)
{
    return x<y?x:y;  
}
int main()
{
    int n;
    while(cin>>n)
    {
        int x,y;
		cin>>x>>y;
        int up=y;
        int down=y;
        int left=x;
        int right=x;
        for(int i=1;i<n;i++)
        {
            cin>>x>>y;
            up=max(up,y);
            down=min(down,y);
            left=min(left,x);
            right=max(right,x);
        }   	
        cout<<max((up-down),(right-left))*max((up-down),(right-left))<<endl;
    }    
   return 0; 
}  


别人的程序如下:

#include <iostream>
#include<string>
#include<vector>
#include<sstream>
using namespace std;
int main()
{
    int zongshu;
 
    while(cin>>zongshu)
    {
    int x;
    int y;
    int xmin,xmax;
    int ymin,ymax;
    cin>>x>>y;
    xmin=xmax=x;
    ymin=ymax=y;
    for(int i=2;i<=zongshu;  i++)
    {
        cin>>x>>y;
        xmin=min(x,xmin);
        ymin=min(y,ymin);
        xmax=max(x,xmax);
        ymax=max(y,ymax);
    }
    int temp=max(ymax-ymin,xmax-xmin);
    cout<<temp*temp<<endl;
    }
    return 0;
}

相形见绌啊。。

1)定义变量没有别人的好理解,虽然up/down/left/right可以明白啥意思,但是和xmin、、、在写程序的时候还是差很多
2)代码紧凑性也很差
3)也是最坑的一点,在循环的这个问题上,一定要注意初始值是啥???cin>>x>>y的位置?
4) 注意最后的结果输出是啥,如果定义变量,会存在强制转换的问题。
到处是坑~自己还太嫩~

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值