关注
贴一个回溯 + 剪枝 实际时间复杂度应该很低 每一位数最多两种可能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";
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
1851次浏览 43人参与
# 产品人专业大盘点 #
68217次浏览 323人参与
# 牛客AI体验站 #
15328次浏览 271人参与
# 产品每日一题 #
85095次浏览 694人参与
# 牛友的春节生活 #
10134次浏览 204人参与
# 备战春招/暑实,现在应该做什么? #
6866次浏览 197人参与
# 我们是不是被“优绩主义”绑架了? #
31638次浏览 480人参与
# 从夯到拉,锐评职场mentor #
6735次浏览 107人参与
# 制造业的秋招小结 #
143176次浏览 2088人参与
# 实习到现在,你最困惑的一个问题 #
5960次浏览 163人参与
# 春招什么时候投? #
12518次浏览 207人参与
# 找工作中的意难平 #
982624次浏览 6423人参与
# 春节提前走,你用什么理由请假? #
12554次浏览 287人参与
# 距离春招还有一个月,你现在是什么开局? #
8557次浏览 132人参与
# 今年秋招你收到了多少封邮件? #
38086次浏览 280人参与
# 春节前,你还在投简历吗? #
16648次浏览 190人参与
# 暑期实习什么时候投? #
8709次浏览 195人参与
# 数字马力求职进展汇总 #
330838次浏览 2380人参与
# 聊聊Agent开发 #
28547次浏览 652人参与
# 我的省钱小妙招 #
38237次浏览 449人参与
查看5道真题和解析