【Educational Codeforces Round 36 C】 Permute Digits
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Educational Codeforces Round 36 C】 Permute Digits,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1646字,纯文字阅读大概需要3分钟。
内容图文
![【Educational Codeforces Round 36 C】 Permute Digits](/upload/InfoBanner/zyjiaocheng/1310/716b2667f6a04dc09bd117b0bcfda00f.jpg)
6> 【链接】
5> 我是链接,点我呀:)
6> 【题意】
4>
在这里输入题意
6> 【题解】
4>
//从大到小枚举第i(1..len1)位
//剩余的数字从小到大排序。
//看看组成的数字是不是小于等于b
//如果是的话。
//说明第i位就是选这个数字了。
//接下来枚举下一位。
6> 【代码】
#include <bits/stdc++.h>
#define ll long long
using
namespace std;
constint N = 20;
string s1,s2;
int len1,len2;
int bo[N],a[N],b[N];
vector<int> v,vans;
bool get_ans(){
for (int i = 0;i <(int) vans.size();i++)
v[i+1] = vans[i];
int nn = (int) vans.size();
for (int i = 0;i<=9;i++)
for (int j = 1;j <= bo[i];j++)
v[++nn] = i;
for (int i = 1;i <= len1;i++)
if (v[i]!=b[i] && v[i]>b[i]) returnfalse;
elseif (v[i]!=b[i] && v[i]<b[i])returntrue;
returntrue;
}
int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
cin >> s1 >> s2;
len1 = s1.size(),len2 = s2.size();
if (len1<len2){
sort(s1.begin(),s1.end());
reverse(s1.begin(),s1.end());
cout <<s1<<endl;
return0;
}
v.resize(len1+1);
//len1==len2;for (int i = 0;i < len1;i++)
a[i+1] = s1[i]-'0';
for (int i = 0;i < len2;i++)
b[i+1] = s2[i]-'0';
for (int i = 1;i <= len1;i++) bo[a[i]]++;
bool haved = 0;
for (int i = 0;i < len1;i++){
for (int j = 9;j>=0;j--)
if (bo[j]){
int k = s2[i]-'0';
if (j<=k || haved){
bo[j]--;
vans.push_back(j);
if (get_ans()){
if (j<k) haved =1;
break;
}
vans.pop_back();
bo[j]++;
}
}
}
for (int i = 0; i< (int) vans.size();i++)
cout <<vans[i];
//从大到小枚举第i(1..len1)位//剩余的数字从小到大排序。//看看组成的数字是不是小于等于b//如果是的话。//说明第i位就是选这个数字了。//接下来枚举下一位。return0;
}
原文:https://www.cnblogs.com/AWCXV/p/8282307.html
内容总结
以上是互联网集市为您收集整理的【Educational Codeforces Round 36 C】 Permute Digits全部内容,希望文章能够帮你解决【Educational Codeforces Round 36 C】 Permute Digits所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。