zoukankan      html  css  js  c++  java
  • hdu 4850 Wow! Such String! 欧拉回路

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4080264.html

    题目链接:hdu 4850 Wow! Such String! 欧拉回路

    长度为4的由26个字母组成的字符串一共有$4^{26}$种,从aaaa开始,在加上结尾的aaa那么该字符串长度为$4^{26}+3$。当字符串i的后三个字母和字符串j的前三个字母相同则ij有一条边,遍历所有的边可以构成一个欧拉回路。

    首先构造aaaabbbb...zzzz的字符串,然后依次向结尾添加符合条件的字符串,直到遍历完所有的边为止。

    代码如下:

     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <iostream>
     4 #include <cstring>
     5 #define     MAXN 500001
     6 char s[MAXN];
     7 bool vis[26][26][26][26];
     8 int n;
     9 using namespace std;
    10 void solve()
    11 {
    12     memset(vis, 0, sizeof(vis));
    13     n = 0;
    14     for( int i = 0 ; i < 26 ; i++ )
    15     {
    16         for( int j = 0 ; j < 4 ; j++ )
    17         {
    18             s[i*4+j] = i+'a';
    19             n++;
    20         }
    21     }
    22     for( int i = 0 ; i < 25 ; i++ )
    23     {
    24         vis[i][i][i][i] = true;
    25         vis[i][i][i][i+1] = true;
    26         vis[i][i][i+1][i+1] = true;
    27         vis[i][i+1][i+1][i+1] = true;
    28     }
    29     vis[25][25][25][25] = true;
    30     while( 1 )
    31     {
    32         int i = 25;
    33         while(i>=0)
    34         {
    35             if( vis[s[n-3]-'a'][s[n-2]-'a'][s[n-1]-'a'][i] == false )
    36             { 
    37                 vis[s[n-3]-'a'][s[n-2]-'a'][s[n-1]-'a'][i] = true;
    38                 s[n++] = i+'a';
    39                 break;
    40             }
    41             i--;
    42         }
    43         if( i < 0)
    44         {
    45             break;
    46         }
    47     }
    48 }
    49 int main(int argc, char *argv[])
    50 {
    51     solve();
    52     int t;
    53     while( scanf("%d", &t ) != EOF)
    54     {
    55         if( t > n )
    56         {
    57             printf("Impossible
    ");
    58         }
    59         else
    60         {
    61            for( int i = 0 ; i < t ; i++ )
    62            {
    63                printf("%c", s[i]);
    64            }
    65            printf("
    ");
    66         }
    67     }
    68 }
    View Code
  • 相关阅读:
    ELK+Kafka集群日志分析系统
    Centos 6.5 部署 redmine 3.3
    Centos 6.5 搭建l2tp 服务端和客户端
    Logstash之multiline 插件
    MYSQL MHA
    windows上给yii2安装插件
    YII2框架的安装
    Apache服务器配置项和虚拟机配置
    浮点数的比较
    微信自定义菜单总结
  • 原文地址:https://www.cnblogs.com/jostree/p/4080264.html
Copyright © 2011-2022 走看看