ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

递推 字符串

2021-05-05 09:30:05  阅读:150  来源: 互联网

标签:学姐 编码 优美 十六进制 int 字符串 include 递推


链接:https://ac.nowcoder.com/acm/contest/11232/B
来源:牛客网

学姐最近喜欢上了编码,尤其是十六进制编码,但是学姐特别挑剔,在学姐眼中,只有逐位递增的编码才是一个优美的编码,比如12,58都是优美的编码,85,22则都不是优美的编码,现在学姐得到了一个编码串,她希望你告诉她该编码串里可查询到的所有不重复的优美的编码总个数,对于单个字符组成的编码,学姐总是认为这个编码是优美的,且优美的编码当中是允许存在前导零的

编码可查询的判定依据:在给定编码串ss中删去任意kk位字符(0≤k<|s|)(0≤k<∣s∣),剩下字符不改变顺序组成一个新的编码s1s1,则认为s1s1可在ss中查询到,如0102中可查询的编码有0,1,2,00,01,02,10,12,010,012,002,102,0102
输入描述:
一个字符串s表示所给十六进制编码串(1≤|s|≤1000000)
(保证所给编码串与标准十六进制一致,编码串中仅可能出现0-9与A-F,不会有多余字符出现)
输出描述:
一个数,表示不重复计算的情况下优美的编码的总个数
示例1
输入
复制
001A
输出
复制
7
说明
七种方案分别为
0,01,0A,01A,1,1A,A

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[1000001];
int dp[1000101];
int main()
{
    scanf("%s",s);
    int i,t,ans=0,m,j;
    t=strlen(s);
    for(i=0; i<t; i++)
    {
        if(s[i]>='0'&&s[i]<='9')
            m=s[i]-'0';
        else
            m=s[i]-'A'+10;
        int sum=1;
        for(j=0; j<m; j++)
            sum+=dp[j];
        dp[m]=sum;
    }
    for(i=0; i<=15; i++)
        ans+=dp[i];
    printf("%d\n",ans);
}

标签:学姐,编码,优美,十六进制,int,字符串,include,递推
来源: https://blog.csdn.net/m0_46312382/article/details/116419915

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有