uva216-网络连接

此题为暴力求解法回溯法的训练参考

翻译请戳 http://luckycat.kshs.kh.edu.tw/

解题思路

回溯。

可以用数组存储中间路径,

如果链接完毕且小于最小值,将中间路径存入最终路径。

详见代码。

代码

#include<stdio.h>
#include<math.h>
#include<string.h>
const int maxLen = 10;
typedef struct point {
    int x, y;
} Point;
Point setP[maxLen];
Point Path[maxLen];  //存储“中间”路径
Point Final[maxLen];  //存储“最终”路径
bool connet[maxLen];
int n;
double min;
double dist(Point A, Point B)
{
    return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
}
void Search(int start, int left, double res)
{
    if(res>min) return ;
    else if(left == 0) {
        min = res;
        for(int i=0; i<n; i++) Final[i] = Path[i];
        return ;
    }
    for(int i=0; i<n; i++) if(!connet[i]) {
        double mid = res;
        mid += (dist(setP[start], setP[i]) + 16.0);
        connet[i] = true;
        Path[n-left] = setP[i];
        Search(i, left-1, mid);
        connet[i] = false;
    }
}
int main()
{
    scanf("%d", &n);
    int tot = 0;
    while(n != 0) {
        memset(connet, 0, sizeof(connet));
        min = 1e9;
        for(int i=0; i<n; i++) {
            int x, y;
            scanf("%d%d", &x, &y);
            Point temp;
            temp.x=x; temp.y=y;
            setP[i] = temp;
        }
        for(int i=0; i<n; i++) {
            Path[0] = setP[i];
            connet[i] = true;
            Search(i, n-1, 0);
            connet[i] = false;
        }
        tot++;
        printf("**********************************************************\n");
        printf("Network #%d\n", tot);
        for(int i=n-1; i>0; i--) {
            printf("Cable requirement to connect (%d,%d) to (%d,%d) is %.2lf feet.\n",
              Final[i].x, Final[i].y, Final[i-1].x, Final[i-1].y, dist(Final[i], Final[i-1])+16.0);
        }
        printf("Number of feet of cable required is %.2lf.\n", min);
        scanf("%d", &n);
    }
    return 0;
}
时间: 2024-10-17 01:07:43

uva216-网络连接的相关文章

VMware网络连接模式说明及故障排查

一.VMware网络连接模式-桥接.NAT以及仅主机模式的详细介绍和区别 VMware 桥接模式 VMware桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络(例如图中所示的局域网和Internet,下同).简而言之,这就好像在上图所示的局域网中添加了一台新的.独立的计算机一样.因此,虚拟机也会占用局域网中的一个IP地址,并且可以和其他终端进行相互访问.桥接模式网络连接支持有线和无线主机网络适配器.如果

物理真实网络连接和虚拟机联网的方式详解

物理真实网络连接和虚拟机联网的方式详解 一.物理真实网络连接图详解 二.查找VMware指定虚拟IP: 1. 2. 3. 三.注意:Linux虚拟网络连接有以下几种: 1.NAT方式(这种方式CentOS可以上外网) 2.桥接方式(bridging)(这种方式CentOS可以上外网) 3.hostonly方式(注意:这种方式CentOS不可以上外网) 四.虚拟机的IP在window上ping下,看能不能拼的通,如果拼的通,说明linux上可以上外网 1.查看linux下ip 2.在window上

android 网络连接 wifi gprs的连接

package com.example.androidday15_network1; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo.State; import android.os.Bundle; import andr

(转)Altium Designer PCB网络连接方式Port和Net Label详解

1.图纸结构      图纸包括两种结构关系: 一种是层次式图纸,该连接关系是纵向的,也就是某一层次的图纸只能和相邻的上级或下级有关系:另一种是扁平式图纸,该连接关系是横向的,任何两张图纸之间都可以建立信号连接. 2.网络连接方式      Altium Designer提供了6类网络标识:Net Label(网络标号),Port(端口),Sheet Entry(图纸入口),Power Port(电源端口),Hidden Pin(隐匿引脚).Off-sheet Connector(图纸外连接符)

虚拟机的三种网络连接模式

虚拟机通常有三种可用的网络连接模式1.桥接2.NAT3.Host-only附:自定义(没有特殊要求一般不用) 用例子进行讲解:我的虚拟机中有两台机器:分别叫linuxclient和linuxserver我的物理机IP:192.168.236.119A的物理机IP:192.168.236.124B的物理机IP:192.168.236.118(小插曲:118能ping通,124不能ping通,原因是开了防火墙)以下用118作为实际局域网的其他机器. 前提:使用DHCP分配IP,使用我们学校的DNS(

[转]VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT

转自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/03/15/1985084.html VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1.bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器.在桥接模式下

使用java检测网络连接状况

windows中可以通过在cmd中使用ping命令来检测网络连接状况,如下: 网络连接正常时: 网络未连接时: 在java中可以通过调用ping命令来判断网络是否连接正常: package module.system.common; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * 判断网络连接

【Android】自己写的轻量级安卓网络框架——能够控制网络连接,支持缓存

1原因: 之所以写这个框架是因为网上的好多的网络框架都没有很好的对网络连接进行控制,比如当你点击取消的时候只是对话框取消了,后台网络请求还是在继续,这样就造成了activity的无法释放,更严重的情况是降低APP流畅度,所以就结合自己的需求写了个这样轻量级的网络框架 2解决方案: 我已经开源了,放在了OSC上,框架目前还不是很完善,所以需要慢慢改善,不过这个流程目前感觉是非常不错的,当activity销毁的时候基本不会存在无法释放问题.当你点击取消的时候也不会出现后台网络请求还在继续的情况. h

网络连接详细信息出现两个自动配置ipv4地址

  问题:网络连接详细信息出现两个自动配置ipv4地址,一个是有效地址,一个是无效地址.   解决办法:先将本地连接ip设置成自动获取,然后点击开始-->运行-->输入cmd,回车,进入命令行界面,输入ipconfig  /release回车,然后输入ipconfig  /renew,然后等待ip更新,一般到这里问题已经解决,然后再设置静态ip就行了.

Android判断网络连接状态

需要相关权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/