关注
void maxNumber(const vector<int> &;v, int num)
{
vector<int> arr, ans;
int minChoose=10, maxChoose=0;
bool exist[10];
for(int x:v)
{
exist[x]= true;
minChoose = min(minChoose, x); //可选择的最小值
maxChoose = max(maxChoose, x); //可选择的最大值
}
while(num) //将num每一位存到数组
{
arr.push_back(num%10);
num /= 10;
}
reverse(arr.begin(), arr.end());
//答案应尽可能和num位数相同,若位数相同无解,则答案减少一位且每位取最大值,如100 {2,3,4}的答案为44
for(int i=0;i<arr.size();i++)
{
//待选择的后一位大于等于可选数字的最小值时,当前为才可以选等值,否则只能选小于的值
int j = (i == arr.size() - 1 || arr[i + 1] >= minChoose ? arr[i] : arr[i] - 1);
while (j >= 0 &;&; !exist[j])
j--;
if(j<0) //同位数无解,退而求次降低解的位数
{
ans.clear();
for (int k = 0; k < arr.size() - 1; ++k)
ans.push_back(maxChoose);
break;
}
else if(j!=arr[i]) //当前位取了小于原数同位的值,则解确定,后面每一位都可以取最大值
{
ans.push_back(j);
while (ans.size()<arr.size())
ans.push_back(maxChoose);
break;
}
ans.push_back(j);
}
for(auto &;x:ans)
cout<<x;
cout << endl;
}
查看原帖
1 评论
相关推荐
点赞 评论 收藏
分享
2025-12-24 15:18
中南大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
11421次浏览 198人参与
# 帆软软件工作体验 #
10725次浏览 50人参与
# 软开人,秋招你打算投哪些公司呢 #
177257次浏览 1334人参与
# 秋招被挂春招仍然能投的公司 #
22317次浏览 216人参与
# 机械制造2024笔面经 #
1515620次浏览 12994人参与
# 1月小结:你过的开心吗? #
5624次浏览 132人参与
# 实习,不懂就问 #
157858次浏览 1380人参与
# AI求职实录 #
18115次浏览 406人参与
# 没关系,至少我的__很曼妙 #
13091次浏览 225人参与
# 今年春招是金一银二嘛? #
30558次浏览 286人参与
# 秋招被确诊为…… #
286771次浏览 1595人参与
# 聊聊你的职场新体验 #
316895次浏览 1857人参与
# 快手年终开大包 #
4213次浏览 57人参与
# 抛开难度不谈,你最想去哪家公司? #
17288次浏览 242人参与
# 为什么有人零实习也能进大厂? #
16367次浏览 277人参与
# 你的第一家实习公司是什么档次? #
14061次浏览 177人参与
# 如果能重来,就业or读研你选哪个? #
271534次浏览 2611人参与
# 赚钱的意义在这一刻具象化 #
12329次浏览 240人参与
# 考研人,我有话说 #
164203次浏览 1243人参与
# Prompt分享 #
19091次浏览 457人参与
查看10道真题和解析