字节的一道笔试题,不知道怎么做

大概就是给一行字符串,每三个一组,中间用空格分开,每个字符在0-9之间。
求包含0-9所有数字需要最少的组数。
测试用例:
"000 111 222 345 678 891" output: 5
"000 000 000 123 456 789" output: 4
全部评论
闲的没事给你写一下,复杂度n*2^10,类似状压dp, 话说这种一般数据比较小吧,直接给面试官写个dfs应该就行。 #include <bits/stdc++.h> // 相当于或起来全是1也就等于1024 - 1 int dp[1024];//dp[i] 凑出i的最小次数 int main() { int n; for (int i = 1; i <= 1023; i++) dp[i] = 100;// 初始化最大 dp[0] = 0; //啥也不选次数是0 std::vector<std::string> s = {"000", "000", "000", "123", "456", "789"}; //s = {"000", "111", "222", "345", "678", "891"}; for (auto e : s) { int ans = 0; for (int i = 0; i < 3; i++) { ans |= (1 << (e[i] - '0')); } for (int i = 0; i <= 1023; i++) { int x = i | ans; dp[x] = std::min(dp[x], dp[i] + 1); } std::cout << ans << std::endl; } std::cout << dp[1023] << std::endl; return 0; }
2 回复 分享
发布于 2023-04-17 18:31 北京
哪个部门的啊
点赞 回复 分享
发布于 2023-04-18 17:31 广东
双指针或者二分
点赞 回复 分享
发布于 2023-04-17 17:57 江苏

相关推荐

昨天 11:30
门头沟学院 Java
失去了成为米孝子的机会
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
07-11 22:27
中南大学 Java
程序员牛肉:学历的话没问题。但是没问题的也就只有学历了。 其实你的整体架构是正确的,博客接着干。但是项目有点过于简单了。从后端的角度上讲,你这也就是刚入门的水平,所以肯定约面试够呛。 如果你要应聘后端岗位,那你第一个项目竟然是仿写操作系统。这个你要面试官咋问你。你一定要记住一点,你简历上写的所有的东西,都是为了证明你有能力胜任当前的岗位,而不是为了证明你自己会什么。 如果你只是浅浅的做几个项目,描述也都是烂大街。技术点也都是各种混水类的配置类需求,那你就不要幻想自己能走多远。一定要保持思考,保持学习。
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

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