• 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;
    }

      

  • 相关阅读:
    ContextMenustrip 控件
    Toolstrip 工具栏控件
    Menustrip控件和ContextMenustrip控件
    TabControl 选项卡控件
    GroupBox 分组框控件
    Pnel控件
    【bzoj3427】Poi2013 Bytecomputer dp
    【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp
    【bzoj1334】[Baltic2008]Elect 背包dp
    【bzoj1369】[Baltic2003]Gem 树形dp
  • 原文地址:https://www.cnblogs.com/staginner/p/2169178.html
Copyright © 2020-2023  润新知