码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 4850 Wow! Such String!

时间:2014-08-08 21:02:56      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   art   

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

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

下面是代码

bubuko.com,布布扣
#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("\n");
    }
}
View Code

 

hdu 4850 Wow! Such String!,布布扣,bubuko.com

hdu 4850 Wow! Such String!

标签:style   blog   http   color   os   io   for   art   

原文地址:http://www.cnblogs.com/ye8370/p/3899962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!