给定一个数n,如:23121,给定一组数字a如[2,4,9],求由a中元素组成的小于n的最大数。
#include<string> #include<vector> #include<iostream> #include <algorithm> using namespace std; int ans; int value = 14132; string valueStr = to_string(value); vector<int> nums = {1,4,9}; bool dfs(int index, bool judge, int temp) { if(index == valueStr.size()) { ans = temp; return true; } if(judge) { return dfs(index + 1, true, temp * 10 + (nums[nums.size() - 1])); } else { int val = valueStr[index] - '0'; for(int i = nums.size() - 1; i >= 0; --i) { if(val == nums[i]) { if(dfs(index + 1, false, temp * 10 + nums[i])) { return true; } } else if (val > nums[i]) { if(dfs(index + 1, true, temp * 10 + nums[i])) { return true; } } } //最终结果为空 if(index != 0) { return false; } //少了一位,显然小了 return dfs(index + 1, true, temp); } } int main() { dfs(0, false, 0); cout << ans << endl; return 0; }
posted on 2022-04-29 17:11 silenccfly 阅读(1025) 评论(0) 编辑 收藏 举报