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

B.Long Number(codeforce1157/B)

时间:2019-10-04 13:04:36      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:一个   cli   数组   输入   一段   子串   break   play   scan   

题意:输入一个数a和一个长度为10的数组,数组存入9个1~9的数。

数a的每一位数字代表数组的地址,取数a的一段非空连续子串,若对应地址内的数字大于该位数字,将该位替换,使数a变成可能最大值。

思路:从左往右找,因为高位替换一定比低位替换的值大。

技术图片
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
    int n,f[10],i,s[200010],d,flag;
    char a[200010];
    while(~scanf("%d",&n))
    {
        scanf("%s",&a);
        for(i=0;i<n;i++)
            s[i]=a[i]-0;
        for(i=1;i<=9;i++)
            scanf("%d",&f[i]);
        for(i=0,flag=0;i<n;i++)
        {
            d=s[i];
            if(f[d]>s[i])
            {
                s[i]=f[d];
                flag=1;
            }
            else if(f[d]<s[i]){
                if(flag==1)
                    break;
            }

        }
        for(i=0;i<n;i++)
            printf("%d",s[i]);
        printf("\n");
    }
}
View Code

 

B.Long Number(codeforce1157/B)

标签:一个   cli   数组   输入   一段   子串   break   play   scan   

原文地址:https://www.cnblogs.com/DreamingBetter/p/11621694.html

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