zoukankan      html  css  js  c++  java
  • 洛谷 P1341 无序字母对(欧拉回路)

    题目:

    解题思路:

    我好菜啊!!

    首先可以n2搞定,而对于每个点,又可以在当前不优的状态下将不好的状态拼到后面。

    最后回溯搞定。

    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 int n;
     5 bool r[1000][1000];
     6 int ind[1000];
     7 int ans[1000];
     8 char cmd[10];
     9 int cnt;
    10 int tot;
    11 void dfs(int x)
    12 {
    13     
    14     for(int i='A';i<='z';i++)
    15         if(r[x][i])
    16         {
    17             r[x][i]=r[i][x]=false;
    18             dfs(i);
    19         }
    20     ans[++tot]=x;
    21 }
    22 int main()
    23 {
    24     scanf("%d",&n);
    25     for(int i=1;i<=n;i++)
    26     {
    27         scanf("%s",cmd+1);
    28         r[cmd[1]][cmd[2]]=r[cmd[2]][cmd[1]]=true;
    29         ind[cmd[1]]++;
    30         ind[cmd[2]]++;
    31     }
    32     for(int i='A';i<='z';i++)
    33         if(ind[i]&1)
    34             cnt++;
    35     if(cnt!=0&&cnt!=2)
    36     {
    37         puts("No Solution");
    38         return 0;
    39     }
    40     int sta;
    41     for(int i='z';i>='A';i--)
    42         if(ind[i])
    43         {
    44             if(cnt)
    45             {
    46                 if(ind[i]&1)
    47                     sta=i;
    48             }else
    49                 sta=i;
    50         }
    51     dfs(sta);
    52     if(tot!=n+1)
    53     {
    54         puts("No Solution");
    55         return 0;
    56     }
    57     for(int i=tot;i;i--)
    58         printf("%c",ans[i]);
    59     puts("");
    60     return 0;
    61 }
  • 相关阅读:
    firefox 插件开发2
    android ndk
    android Fragment.
    排序算法
    php中判断iphone版本
    php css
    ndk 入门实例
    howtoaddabuttontopreferencescreen 自定义view
    分布式K/V存储方案
    android版 eclipse
  • 原文地址:https://www.cnblogs.com/blog-Dr-J/p/9788816.html
Copyright © 2011-2022 走看看