zoukankan      html  css  js  c++  java
  • hdu 4850 Wow! Such String!

    这是当时西安邀请赛的题目,也就是因为这道题,我们无缘银牌。。。

    其实这道题的大致想法当时我想出来了,就是我是想找到一条通过所有顶点的通路,顶点是所有的长度是4的子串。但是当时没有尝试搜索,以为不会这么简单就找到那条路。但是现在明白了,对于所有顶点度数为偶数的图,一定可以找到这样一条路的。

    下面是代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int mod = 26*26*26;
    const int maxn = 26*26*26*26;
    
    bool v[mod][30];
    int used[maxn + 10];
    char s[maxn + 10];
    int num = 0;
    
    int get_next(int a, int x)
    {
        a %= mod;
        a *= 26;
        a += x;
        return a;
    }
    
    int get_x(int a)
    {
        a %= mod;
        int ret = 0, t = a;
        for(int i = 0; i < 26; i++)
        {
            if(v[a][i])
            continue;
    
            if(ret == 0 || used[t] > used[a * 26 + i])
            t = a * 26 + i, ret = i;
        }
        v[a][ret] = 1;
        return ret;
    }
    
    void init()
    {
        int a = 0;
         num = 3;
        for(int i = 0; i < 3; i++)
        s[i] = 'a';
        while(1)
        {
            int x = get_x(a);
            a = get_next(a, x);
    
            if(used[a])
            return;
    
            used[a] = 1;
            s[num++] = 'a' + x;
        }
    }
    
    int main()
    {
        init();
        //cout << num << endl;
        int n;
        while(scanf("%d", &n) == 1)
        {
            if(n > num)
            printf("Impossible");
            else
            for(int i = 0; i < n; i++)
            printf("%c",s[i]);
            printf("
    ");
        }
    }
    View Code
  • 相关阅读:
    队列的定义与实现(C语言实现)
    在CTime类中重载&lt;&lt;和&gt;&gt;
    华为OJ:统计大写字母个数
    sql server smo
    应用服务器负载平衡集群
    存储过程如何执行的快速
    sql server 分布式事务
    代理服务器
    怎样实现数据库负载均衡集群
    多层插件开发框架
  • 原文地址:https://www.cnblogs.com/ye8370/p/3899962.html
Copyright © 2011-2022 走看看