关注
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 评论
相关推荐
11-24 13:59
仲恺农业工程学院 Java 点赞 评论 收藏
分享
牛客72783561...:简历不是这么写的,你这两个项目只说了用到了什么技术,却没说取得了什么成果,在我看来这就是你自己做的一个demo,没有价值。你为什么不写你电赛国二的那个项目? 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 找工作能把i人逼成什么样 #
12032次浏览 156人参与
# 你认为工作的意义是什么 #
223336次浏览 1412人参与
# 你今年做了几份实习? #
8028次浏览 127人参与
# 说说你知道的学历厂 #
369390次浏览 1327人参与
# 你开始找寒假实习了吗? #
13817次浏览 201人参与
# 产品面经 #
238473次浏览 2099人参与
# 0经验如何找实习? #
24237次浏览 418人参与
# 大学最后一个寒假,我想…… #
71489次浏览 723人参与
# 大家每天通勤多久? #
63925次浏览 413人参与
# 你找工作经历过哪些骗局? #
8578次浏览 135人参与
# 大厂面试初体验 #
83007次浏览 378人参与
# 25年找工作是什么难度? #
14217次浏览 144人参与
# 实习越久越好,还是多多益善? #
16696次浏览 165人参与
# 一上班就想____,这正常吗? #
4560次浏览 90人参与
# 写简历别走弯路 #
870813次浏览 8699人参与
# 面试尴尬现场 #
203594次浏览 801人参与
# 字节出了豆包coding模型 #
6487次浏览 59人参与
# 什么样的公司千万别去 #
27131次浏览 143人参与
# 如何KTV领导 #
80332次浏览 521人参与
# 机械人晒出你的简历 #
144440次浏览 870人参与
