题解 | 哈希冲突

哈希冲突

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的题解专栏,里面包含的题目都是十分典型的经典题目。

全部评论

相关推荐

2025-12-09 16:37
西北大学 前端工程师
点赞 评论 收藏
分享
2025-11-25 09:41
已编辑
Java
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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