夹缝放箱 -------》 无归之室问题
Posted 繁华中央
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了夹缝放箱 -------》 无归之室问题相关的知识,希望对你有一定的参考价值。
这里的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; }
这道题说白了就是到高中数学题,我也看不出来有什么算法,要是是什么高大上的算法我可做不出来 /斜眼笑
以上是关于夹缝放箱 -------》 无归之室问题的主要内容,如果未能解决你的问题,请参考以下文章
身边都是强者,985硕士夹缝求生混饭吃,艰难面试java开发上岸