随机生成字符串
Posted stupid_one
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机生成字符串相关的知识,希望对你有一定的参考价值。
#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; }
以上是关于随机生成字符串的主要内容,如果未能解决你的问题,请参考以下文章