码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-12-10 21:34:01      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:http   ann   ima   stream   col   main   log   using   else   

技术分享图片

这里的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;
}

 

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

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

标签:http   ann   ima   stream   col   main   log   using   else   

原文地址:http://www.cnblogs.com/fhzy291146030/p/8017873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!