关注
贴一个回溯 + 剪枝 实际时间复杂度应该很低 每一位数最多两种可能O(2^9) 欢迎大佬指正
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
int solve(vector<int> nums, int n){
sort(nums.begin(), nums.end());
nums.erase(unique(nums.begin(), nums.end()), nums.end());
int m = nums.size();
int res = 0;
string target = to_string(n);
int len = target.size();
function<bool(int)> dfs = [&](int x){
if(x == len && res < n){
if(res == 0) return false;
return true;
}
for(int i = m - 1; i >= 0; i --){
if(res + nums[i] * (int) pow(10, len - x - 1) >= n) continue;
res += nums[i] * (int)pow(10, len - x - 1);
// cout << res << "\n";
if(dfs(x + 1)) return true;
res -= nums[i] * (int)pow(10, len - x - 1);
}
if(x == 0){
res = 0;
if(dfs(x + 1)) return true;
}
return false;
};
if(dfs(0))
return res;
return -1;
}
int main() {
vector<int> nums = {6, 9, 3, 5};
cout << solve(nums, 56449) << "\n";
}
查看原帖
点赞 评论
相关推荐
12-06 17:39
中国石油大学(华东) 前端工程师
rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 什么是优秀的实习经历 #
8347次浏览 211人参与
# 实习简历求拷打 #
12038次浏览 155人参与
# 被上班搭子“传染”了哪些习惯 #
5516次浏览 98人参与
# 秋招被挂春招仍然能投的公司 #
6742次浏览 98人参与
# 工作后,你落下了哪些病根 #
13364次浏览 187人参与
# mt对你说过最有启发的一句话 #
35635次浏览 424人参与
# 作业帮求职进展汇总 #
82943次浏览 547人参与
# 摸鱼被leader发现了怎么办 #
101086次浏览 642人参与
# 秋招特别不鸣谢 #
15628次浏览 177人参与
# 考研失败就一定是坏事吗? #
200963次浏览 1371人参与
# 选实习,你更看重哪方面? #
13976次浏览 216人参与
# 今年秋招你收到了多少封邮件? #
17970次浏览 219人参与
# 投格力的你,拿到offer了吗? #
152477次浏览 817人参与
# 京东美团大战,你怎么看? #
158090次浏览 860人参与
# 机械/制造每日一题 #
80245次浏览 1411人参与
# 第一次面试 #
1036458次浏览 13682人参与
# 携程求职进展汇总 #
840056次浏览 5532人参与
# 毕业论文进行时 #
20879次浏览 131人参与
# 工作中遇到的歹人 #
28176次浏览 315人参与
# 你投了多少家公司?进展是___ #
188276次浏览 1171人参与