zoukankan      html  css  js  c++  java
  • UVA 140 Bandwidth

    UVA_140

    这个题目首先在读取数据的时候要把所有顶点存放在一个数组里,同时用邻接矩阵把顶点间的关系存储下来。之后对顶点进行升序排序,之所以排序主要是因为题目中要求结果相同时输出字典序最小的方案,而排序之后顺序深搜到的第一个符合要求的解,一定是字典序最小的解。

    然后只需要枚举所有排列并进行计算即可。

    #include<stdio.h>
    #include
    <string.h>
    #include
    <ctype.h>
    #include
    <stdlib.h>
    int n,a[10],A[10],G[30][30],vis[10],ans[10],res;
    char b[100];
    int cmp(const void *_p,const void *_q)
    {
    int *p=(int *)_p;
    int *q=(int *)_q;
    return *p-*q;
    }
    void dfs(cur)
    {
    int i,j,temp;
    if(cur==n)
    {
    temp
    =0;
    for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
    if(G[A[i]][A[j]]&&j-i>temp)
    temp
    =j-i;
    if(temp<res)
    {
    res
    =temp;
    memcpy(ans,A,
    sizeof(A));
    }
    return;
    }
    for(i=0;i<n;i++)
    if(!vis[i])
    {
    vis[i]
    =1;
    A[cur]
    =a[i];
    dfs(cur
    +1);
    vis[i]
    =0;
    }
    }
    int main()
    {
    int i,j,k,hash[30];
    while(1)
    {
    memset(b,
    '\0',sizeof(b));
    scanf(
    "%s",b);
    if(b[0]=='#')
    break;
    n
    =0;
    memset(G,
    0,sizeof(G));
    memset(hash,
    0,sizeof(hash));
    for(i=0;b[i]!='\0';)
    {
    j
    =b[i]-'A';
    if(!hash[j])
    {
    hash[j]
    =1;
    a[n
    ++]=j;
    }
    i
    +=2;
    while(isalpha(b[i]))
    {
    k
    =b[i]-'A';
    if(!hash[k])
    {
    hash[k]
    =1;
    a[n
    ++]=k;
    }
    G[j][k]
    =G[k][j]=1;
    i
    ++;
    }
    i
    ++;
    }
    qsort(a,n,
    sizeof(a[0]),cmp);
    memset(vis,
    0,sizeof(vis));
    res
    =1000000000;
    dfs(
    0);
    for(i=0;i<n;i++)
    printf(
    "%c ",ans[i]+'A');
    printf(
    "-> ");
    printf(
    "%d\n",res);
    }
    return 0;
    }

      

  • 相关阅读:
    DELL(linux 系统里系统掉盘)(阵列Foreign)命令行里重做阵列
    MegaCli 管理raid
    Linux下DNS服务器
    Linux 系统用户密码长度以及复杂度进行限制 PAM
    Linux 用户密码有效期
    Linux服务器系统安全
    整理sql数据
    简单的shell脚本-程序启停
    spring 获取bean的方法
    git 使用squid设置http代理
  • 原文地址:https://www.cnblogs.com/staginner/p/2169178.html
Copyright © 2011-2022 走看看