题解 | 哈希冲突

哈希冲突

https://www.nowcoder.com/practice/37594c5b299e495096a99cf6e4cdf2f5

// 基本原理就是dfs模板往上套,运行时间也是真的长,暴力枚举我只会到这里
// 不过真的很好理解,就是用dfs枚举,然后当构造出来之后就把flag标记为true

bool flag = false;  // 是否构造出来
/*如果构造出来的话,所有栈帧的函数全部销毁*/
void dfs(int cnt,string s1,string &res,string ha)
{
    if (flag)return ;
    if (cnt == enc_len)
    {
        if (H(s1) == ha)
        {
            res = s1;
            flag = true;
        }
        return;
    }
    for (char c = 'b';c <= 'z';c++)
    {
        s1.push_back(c);
        dfs(cnt+1,s1,res,ha);
        s1.pop_back();
    }
}
pair<string, string> solve() {  
    // enc_len是原始字符串长度,enc_key是密钥key
    string s1 = "",s2 = "";
    for (int i = 0;i < enc_len;i++)s1.push_back('a');
    string ha = H(s1);
    dfs(0,"",s2,ha);
    return {s1,s2};
}

int main() {
    cin >> enc_len >> enc_key;
    auto result = solve();
    cout << result.first << " " << result.second << endl;
    return 0;
}

RogeAustine题解系列 文章被收录于专栏

这里是RogeAustine的题解专栏,里面包含的题目都是十分典型的经典题目。

全部评论

相关推荐

03-03 19:02
已编辑
东华理工大学 Node.js
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务