码迷,mamicode.com
首页 > 其他好文 > 详细

560 div3 B. Long Number

时间:2019-05-15 20:28:42      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:size   number   ber   using   open   include   string   copy   onclick   

Examples
input
Copy
4
1337
1 2 5 4 6 6 3 1 9
output
Copy
1557
input
Copy
5
11111
9 8 7 6 5 4 3 2 1
output
Copy
99999
input
Copy
2
33
1 1 1 1 1 1 1 1 1
output
Copy
33

给出一个字符串 和其映射 求最大字典序
技术图片
#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define ll long long
#define pb push_back
#define CLR(A,v)  memset(A,v,sizeof A)
//////////////////////////////////
#define inf 0x3f3f3f3f
const int N=2e5+5;
const int M=1000;
char ma[10];
char s[N];
int main()
{
    int n;RI(n);
    RS(s+1);
    rep(i,1,9)
    cin>>(ma[i+0]) ;

    int i=1;
    while(i<=n)
    {
        if(ma[s[i]]>s[i])
        {
            while(ma[s[i]]>=s[i]&&i<=n)
                cout<<ma[s[i]],i++;
            while(i<=n)
                cout<<s[i],i++;
            break;
        }
        else cout<<s[i],i++;
    }
    return 0;
}
View Code

 

大神简洁的写法:

技术图片
#include <bits/stdc++.h>
using namespace std;

main()
{
    int n; cin>>n;
    string a; cin>>a;
    char f[256]; for (int i=1,j; i<=9; ++i) cin>>j,f[0+i]=0+j;

    int i=0;
    while (i<n && a[i]>=f[a[i]]) ++i;
    while (i<n && a[i]<=f[a[i]]) a[i]=f[a[i]],++i;

    cout<<a;
}
View Code

 

 





560 div3 B. Long Number

标签:size   number   ber   using   open   include   string   copy   onclick   

原文地址:https://www.cnblogs.com/bxd123/p/10871892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!