夹缝放箱 -------》 无归之室问题

这里的a、b、x、y、L1、L2分别对应代码里的变量

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    double a, b, x, y;
    while (cin >> a >> b >> x >> y && a && b && x && y)
    {
        double temp;
        if (a < b) //从这里开始
        { 
            temp = a;   
            a = b;  
            b = temp; 
        }
        if (x < y) 
        {
            temp = x;
            x = y; 
            y = temp;
        }                //到这里,都是为了方便判断,先把大的数字放前面
        if (a > x && b > y)
        {
            cout << "Escape is possible." << endl;
            continue;//节约时间,判断完毕就直接跳过了
        }                                //这里应该是大家都能想到的情况 
        else if (x*x + y*y > a*a + b*b)
        {
            cout << "Box cannot be dropped." << endl;
            continue;
        }                            //这里的x*x + y*y与a*a + b*b就是在求勾股定理的对角线并比较,如果大矩形的对角线小于小矩形的对角线当然是没办法装下的
        else
        {
            double l1 = (a - sqrt(x*x + y*y - b*b)) / 2;
            double l2 = (b - sqrt(x*x + y*y - a*a)) / 2;     //这里是算l1,l2应该能够明白的哈
            if (l1*l1 + l2*l2 > y*y)                        //这里其实就是算那个由y,l1,l2组成的小三角形的斜边是不是大于矩形的边
                cout << "Escape is possible." << endl;
            else
                cout << "Box cannot be dropped." << endl;
        }//L1与L2求出第三条边大于小矩形的宽的话,那么小矩形就可以很轻松的放进去。
    }
    return 0;
}

 

这道题说白了就是到高中数学题,我也看不出来有什么算法,要是是什么高大上的算法我可做不出来         /斜眼笑

posted @ 2017-12-10 19:52  繁华中央  阅读(131)  评论(0编辑  收藏  举报