连接是:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=152

哟我AC了喔.就是用回溯法把每一种可能都找出来,然后看哪个最小。

View Code

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4
 5 const int MAXNUM = 8;
 6 struct Point{
 7     int x;
 8     int y;
 9 };
10
11 bool visit[MAXNUM];
12 Point node[MAXNUM], temp[MAXNUM], final[MAXNUM];
13
14 double dist(Point a, Point b) {
15     int x = a.x - b.x;
16     int y = a.y - b.y;
17     return sqrt(x*x + y*y);
18 }
19
20 // feet, temp_feet, level, nodes[], temp[], visit[], final[]
21 void traverse(double& feet, double temp_feet, int level, int num) {
22     if (level == num){
23         feet = temp_feet;
24
25         for (int i = 0; i < num; i++)
26             final[i] = temp[i];
27     }
28
29     for (int i = 0; i < num; i++){
30         if (!visit[i]){
31             visit[i] = true;
32             temp[level] = node[i];
33             double next_temp_feet = temp_feet;
34             if (level)
35                 next_temp_feet += dist(temp[level-1], temp[level]);
36
37             if (feet >= next_temp_feet)
38                 traverse(feet, next_temp_feet, level+1, num);
39             visit[i] = false;
40         }
41     }
42 }
43
44 int main(int argc, char *argv[]){
45     int num, network_num = 1;
46     cout.setf(ios::fixed);
47     cout.precision(2);
48
49     while (cin >> num && num){
50         for (int i = 0; i < num; i++)
51             cin >> node[i].x >> node[i].y;
52
53         double feet = 0.0;
54         for (int i = 0; i < num-1; i++)
55             feet += dist(node[i], node[i+1]);
56
57         traverse(feet, 0, 0, num);
58         cout << "**********************************************************" << endl;
59
60         cout << "Network #" << network_num << endl;
61         for (int i = 0; i < num-1; i++){
62             cout << "Cable requirement to connect " << "(";
63             cout << final[i].x << "," << final[i].y << ") to (";
64             cout << final[i+1].x << "," << final[i+1].y << ") is ";
65             cout << dist(final[i], final[i+1]) + 16 << " feet." << endl;
66         }
67         cout << "Number of feet of cable required is " << feet + 16*(num-1) << "." << endl;
68         network_num++;
69     }
70     return 0;
71 }

转载于:https://www.cnblogs.com/frankdj412/archive/2013/02/04/2892023.html

UVA 216 - Getting in Line相关推荐

  1. UVA 216 Getting in Line

    大意:给你一些定点,让你以代价最小的边将所有的点连起来. 思路:数据范围很小,可以通过最小生成树或者回溯来解决. 最小生成树去写时不知道哪错了,于是用回溯模拟了一遍,相当于模拟一个数组的全排列. AC ...

  2. π-Algorithmist分类题目(2)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(2) Set Theory U ...

  3. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  4. backtracking算法

    详解backtracking 搞清楚回溯体,穷举多维度值,维度一定会加一 数值一定很小.搞清楚怎么处理输入输出. 有一定的模版. uva,112 这种思想和获取方式是我所追求的. 1 #include ...

  5. Poj 1755Triathlon 未Ac,先mark

    地址:http://poj.org/problem?id=1755 题目: Triathlon Time Limit: 1000MS   Memory Limit: 10000K Total Subm ...

  6. 转:西部数据NAS设备hack

    通过该文学习一下常见硬件web漏洞.重点关注一下几个方面: 1.登录验证代码: 2.文件上传代码: 3.system/exec/popen等是否存在注入可能: 4.调用二进制文件: 5.未登陆可以访问 ...

  7. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  8. 递归神经网络 训练、推到、实现(网络资料整理)_codestorm_新浪博客

    参考: RNN求解过程推导与实现 人人都能用Python写出LSTM-RNN的代码![你的神经网络学习最佳起步] Hinton 的课件 我的最佳学习法就是通过玩具代码,一边调试一边学习理论.这篇博客通 ...

  9. C# AutoCAD ActiveX 二次开发 -- CAD图层合并

    因使用AutoCAD版本为2004,2006版本以后才有.net开发包,因此采用ActiveX方式进行开发. 功能为:将几个CAD图层合并到其中一个上,并设置坐标,线和标记的颜色和字体. CAD对象的 ...

最新文章

  1. 最佳页面置换算法代码_(存储管理)页面置换算法
  2. python猜单词游戏_磁盘空间不足。
  3. 【攻防世界001】Guess-the-Number
  4. Bootstrap4+MySQL前后端综合实训-Day01-PM【position定位的四种方式、Flex布局语法教程及案例(概念、容器属性、项目属性)、双飞翼布局复习、Bootstrap4 教程】
  5. C51 printf修改如何能打印到不同的设备呢?
  6. chackbox的值 php获取_最详细最全的PHP面试题(附答案)
  7. Ext4.1 Grid 分页查询
  8. 英国科研学术网络Janet遭遇DDoS攻击
  9. 多模态 | 复旦推出跨视觉语言模态预训练模型,并达到SOTA
  10. 在html中frame标签的作用,HTML框架标签frameset、frame、iframe、noframes
  11. php这么把pdf转为world,php pdf如何转word
  12. spring aop原理
  13. 广义线性模型 matlab,基于Matlab的广义线性模型建模
  14. 7-6 华氏度转摄氏度(四舍五入)
  15. Rollup 插件开发牛刀小试
  16. java编写打砖块小游戏
  17. 谷粒商城--环境部署(2022/7/28最新)
  18. 电脑配置检测软件下载
  19. 如何清理C盘的垃圾文件
  20. C语言实现【小游戏——反弹球消砖块】

热门文章

  1. 面向串口编程java_Java串口编程例子
  2. php兴趣爱好复选框如何取值,php checkbox 取值详细说明
  3. python爬虫 入门+进阶_python爬虫入门到进阶(三)
  4. Linux export 命令设置环境目录
  5. matlab 放射治疗,dicom-rt解析及在精确放射治疗计划系统中的应用.pdf
  6. PSIM软件中 Simplified C Block模块 和 C Block模块区别
  7. NYOJ-心急的C小加(贪心)
  8. JAVA入门到精通-第7讲-成员方法-构造方法
  9. 学习 服务器部署 hello world
  10. 《高并发Oracle数据库系统的架构与设计》一1.4 本章小结