compare(0,0,0);
cout<<\问题的解如下:\ return 0;
}
运行截图:
(4)倒水问题 源代码: 4.倒水问题: #include\int main() {
int ca,cb,cc,x,y;
while(scanf(\ {
if(cb==cc) { printf(\ }
else if(ca==cc) {
printf(\ printf(\ } else {
x=y=0; if(ca while(1) { if(y==0) — 精选文档 6 精选文档 { y=cb; printf(\ } if(y>ca-x) //如果b中的水大于a中的剩余容积,就把a灌满// { y-=ca-x; x=ca; printf(\ } else //如果b中的水小于a中的剩余容积,那么把b中的水全加入a// { x+=y; y=0; printf(\ } if(y==cc) //如果b中的水已经和cc相等,那就结束// { break; } if(ca==x) //如果a中的水满了,就把a倒空// { x=0; printf(\ } } } else { — 7 精选文档 while(1) { if(x==0) { x=ca; printf(\ } if(x>cb-y) //如果a中的水大于b中的剩余容积,就把b灌满// { x-=cb-y; y=cb; printf(\ } else //如果a中的水小于b中的剩余容积,那么把a中的水全加入b// { y+=x; x=0; printf(\ } if(y==cc) //如果b中的水已经和cc相等,那就结束// { break; } if(y==cb) //如果b中的水满了,就把b倒空// { y=0; printf(\ } } — 8 精选文档 } } printf(\ } return 0; } 运行截图: 实验三 计算几何算法的实现 1. 实验目的 (1) 理解线段的性质、叉积和有向面积。 (2) 掌握寻找凸包的算法。 (3) 综合运用计算几何和搜索中的知识求解有关问题。 2. 试验设备 硬件环境:PC 计算机 软件环 操作系统:Windows 2000 / Windows XP / Linux 语言环境:Dev cpp / gnu c++ 3. 试验内容 (1) 将讲义第三章第三节中的凸包代码上机运行并检验结果。 (2) 完成讲义第三章的课后习题,上机运行并检验结果。 (3) 思考: 判线段相交时,如果有个线段的端点在另一条线段上,注意可能与另一条线段上的 端点重合,思考这样的情况怎么办。 (4) 房间短路问题: 给顶一个内含阻碍墙的房间,求解出一条从起点到终点的短路径。房间的边界 固定在 x=0,x=10,y=0 和 y=10。起点和重点固定在(0,5)和(10,5)。房间里还有 0 到 18 个 墙,每个墙有两个门。输入给定的墙的个数,每个墙的 x 位置和两个门的 y 坐标区间, 输出最短路的长度。 (4)房间短路问题 — 9 精选文档 源代码: #include typedef pair v1.first=p2.first-p1.first; v1.second=p2.second-p1.first; v2.first=p1.first-p.first; v2.second=p1.second-p.second; return v1.first*v2.second-v1.second*v2.second;} bool on_segment(POINT p,POINT p1,POINT p2){ double min_x=p1.first bool sortByPolorAngle(const POINT &p1,const POINT &p2) { double d=direction(startPoint,p1,p2); if(d<0)return true; if(d >0)return false; if(d==0&&on_segment(startPoint,p1,p2))return true; if(d==0&&on_segment(p2,startPoint,p1))return true; — 10