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

随机生成字符串

时间:2017-10-20 13:21:46      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:logs   names   val   ase   fine   show   ide   space   turn   

技术分享
#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;

struct Node {
    double val;
    int ran;
    char ch;
    bool operator < (const Node & rhs) const {
        if (val != rhs.val) return val < rhs.val;
        else return ran > rhs.ran;
    }
    Node(double _val, int _ran, char _ch) {
        val = _val, ran = _ran, ch = _ch;
    }
};

priority_queue<Node> que;
const int maxn = RAND_MAX + 20;
bool vis[maxn];
map<unsigned long long int, bool> mp;
char str[22222];
const int seed = 131;

void show() {
    static int f = 0;
    if (f < 100) printf("f\n");
    else exit(-1);
    f++;
}

void work() {
    srand(time(NULL));
    for (int i = a; i <= z; ++i) {
        int ran = rand();
        while (vis[ran]) ran = rand();
        vis[ran] = true;
        que.push(Node(1e18, ran, i));
    }
    for (int i = 0; i <= 9; ++i) {
        int ran = rand();
        while (vis[ran]) ran = rand();
        vis[ran] = true;
        que.push(Node(1e18, ran, i));
    }
    int ansNum, ansLen;
    printf("please enter the number for Code : ");
    scanf("%d", &ansNum);
    printf("please enter the len for Code : ");
    scanf("%d", &ansLen);
    for (int i = 1; i <= ansNum; ++i) {
        unsigned long long int hashVal = 0;
        for (int j = 1; j <= ansLen; ++j) {
            Node t = que.top();
            que.pop();
            str[j] = t.ch;
            t.val /= 2;
            vis[t.ran] = false;
            int en = rand();
            while (vis[en] == true) {
//                show();
                en = rand();
//                printf("%d\n", en);
            }
            t.ran = en;
            que.push(t);
            hashVal = hashVal * seed + t.ch;
        }
        if (!mp[hashVal]) {
            mp[hashVal] = true;
            printf("%s\n", str + 1);
        } else {
            i--;
        }
    }
}

int main() {
    work();
    return 0;
}
View Code

 

随机生成字符串

标签:logs   names   val   ase   fine   show   ide   space   turn   

原文地址:http://www.cnblogs.com/liuweimingcprogram/p/7698788.html

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