给后人提供一个符合题目要求的对拍程序(供自测)
查看原帖
给后人提供一个符合题目要求的对拍程序(供自测)
908733
RidiculousBuffal_1楼主2023/2/12 11:58

保证s2大概率是s1的子串

#include <iostream>
#include <string>
#include <random>
#include <chrono>

std::string random_string(std::size_t length)
{
    static std::mt19937 rand_engine(std::chrono::system_clock::now().time_since_epoch().count());
    static std::uniform_int_distribution<int> dist(0, 25);

    std::string result;
    result.reserve(length);
    for (std::size_t i = 0; i < length; ++i) {
        result.push_back('A' + dist(rand_engine));
    }

    return result;
}

int main()
{
    std::mt19937 rand_engine(std::chrono::system_clock::now().time_since_epoch().count());
    std::uniform_int_distribution<int> dist_m(1, 1000000);
    std::uniform_int_distribution<int> dist_n(1, 1000000 - 1);

    std::size_t m = dist_m(rand_engine);
    std::size_t n = dist_n(rand_engine);

    std::string s1 = random_string(m);
    std::uniform_int_distribution<int> dist_start(0, m - n);
    std::size_t start = dist_start(rand_engine);
    std::string s2 = s1.substr(start, n);

//    std::cout << "m: " << m << std::endl;
//    std::cout << "n: " << n << std::endl;
    std::cout <<  s1 << std::endl;
    std::cout << s2 << std::endl;

    return 0;
}

2023/2/12 11:58
加载中...