HACKING

版权声明:https://github.com/godspeedcurry 欢迎加好友哦 https://blog.csdn.net/qq_38677814/article/details/82025892

https://vjudge.net/problem/SPOJ-HACKING
生成一个字串不在模式串中 长度有限制,可使用的字母有限制
适合乱搞,比如本代码中的随机
随机当然也要挑合适的地方随机,显然长度越长,碰撞的几率越小,那么我们就用最长长度随机
见代码

#include <bits/stdc++.h>
using namespace std;
int cnt;
std::map<string, int> mymap;
void solve(){
    srand(time(NULL));
    int k,n,m;
    cin>>n>>m>>k;
    string s;
    cin>>s;
    mymap.clear();
    for(int i=0;i<s.size();i++){
        string temp=s.substr(i,m);
        mymap[temp]++;
    }
    while(1){
        string ans;
        for(int i=0;i<m;i++){
            ans+='a'+rand()%k;
        }
        if(mymap.find(ans)==mymap.end()){
            cout<<ans<<endl;
            return;
        }
    }
}
int main(){
    int t;cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38677814/article/details/82025892