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

大概就是给一行字符串,每三个一组,中间用空格分开,每个字符在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 江苏

相关推荐

评论
1
4
分享

创作者周榜

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