Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341819
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:04:36

金字塔中有一个房间名叫“无归之室”。房间地面完全由相同的矩形瓷砖覆盖。房间里布
满无数的机关和陷阱,这正是其名字的由来。考古队花了几年时间研究对策,最后他们想
出了一个方案。一台遥控的机器人将被送入房间,解除所有机关,然后返回。为了不触动
机关,机器人必须走在瓷砖的中心区域上,绝对不能碰到瓷砖的边缘。如果走错一步,机
器人会被落下的岩石砸成薄饼。

当考古队正准备行动的时候,他们发现了一件可怕的事情:他们没有考虑到机器人携带的
工具箱。由于机器人必须将工具箱放在地面上才能开始解除机关,工具箱不可碰到瓷砖的
边缘。现在他们急需你编程判断工具箱可否放下。

输入格式

输入文件有多组数据组成。每组数据仅含一行A, B, X, Y (1<=A, B, X, Y<=50000,均为
实数)。A, B为瓷砖的长和宽,X, Y为工具箱底面的长和宽(工具箱为长方体)。最后一组
数据A=B=X=Y=0,标志文件结束,不需要处理。

输出格式

若工具箱能以某种方式放在地上,则输出”Escape is possible.”,否则输出”Box can
not be dropped.”。

样例输入

10 10 8 8
8 8 10 10
0 0 0 0

样例输出

Escape is possible.
Box cannot be dropped.

想了好久,也没想出来,请教高手。


--------------------next---------------------
//Test.cpp
#include "iostream.h"

typedef struct _Node{
float A;
float B;
float X;
float Y;
bool IsSafe;
_Node *next;
}Node;
void main()
{
Node *head = NULL,*cur = NULL;

Node node;
while(true)
{
cin>>node.A>>node.B>>node.X>>node.Y;
if(node.A < 1e-6 && node.B < 1e-6 && node.X < 1e-6 && node.Y <1e-6)
break;
if(head == NULL)
{
head = new Node;
head->A = node.A;
head->B = node.B;
head->X = node.X;
head->Y = node.Y;
head->IsSafe = (head->A > head->X && head->B > head->Y)?true:false;
cur = head;
head->next = NULL;
}
else
{
Node *temp = new Node;
temp = new Node;
temp->A = node.A;
temp->B = node.B;
temp->X = node.X;
temp->Y = node.Y;
temp->IsSafe = (temp->A > temp->X && temp->B > temp->Y)?true:false;
temp->next = NULL;
cur->next = temp;
cur = temp;
}
}
while(head!=NULL)
{
if(head->IsSafe)
cout<<"Escape is possible.\n";
else
cout<<"Box cannot be dropped.\n";
head = head->next;
}

}

--------------------next---------------------

阅读(1150) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~