• ZOJ 3490 String Successor


    简单的模拟题,类似于高精度加法运算。理解题意即可。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    const int maxn = 111;
    char s[maxn];
    char ji[maxn];
    int gg[maxn];
    void RevStr(char *str)
    {
        int len;
        char *ptr;
        len = strlen(str);
        ptr = str + len - 1;
        while (str != ptr)
        {
            char ch; ch = *str; *str = *ptr; *ptr = ch; str++;
            if (str == ptr)break;
            else ptr--;
        }
    }
    int main()
    {
        int n, i, y, m;
        int sb;
        scanf("%d", &n);
        for (sb = 0; sb < n; sb++)
        {
            memset(s, 0, sizeof(s));
            memset(ji, 0, sizeof(ji));
            scanf("%s", s);
            scanf("%d", &m);
            y = strlen(s);
            int q = 0;
            for (i = 0; i < y; i++)
            {
                if ((s[i] >= '0'&&s[i] <= '9') || (s[i] >= 'a'&&s[i] <= 'z') || (s[i] >= 'A'&&s[i] <= 'Z'))
                {
                    ji[q] = s[i];
                    gg[q] = i;
                    q++;
                }
            }
            int bu = 0;
            while (q == 0)
            {
                s[y - 1]++;
                printf("%s
    ", s);
                if ((s[y - 1] >= '0'&&s[y - 1] <= '9') || (s[y - 1] >= 'a'&&s[y - 1] <= 'z') || (s[y - 1] >= 'A'&&s[y - 1] <= 'Z'))
                {
                    ji[q] = s[y - 1];
                    gg[q] = y - 1;
                    q++;
                }
                bu++;
                if (bu >= m) break;
            }
            if (bu < m)
            {
                for (i = 0; i < q / 2; i++)
                {
                    int t = gg[i];
                    gg[i] = gg[q - i - 1];
                    gg[q - i - 1] = t;
                }
                RevStr(ji);
                while (1)
                {
                    int zhi = 0;
                    while (1)
                    {
                        if (zhi == q)
                        {
                            if (ji[zhi - 1] >= '0'&&ji[zhi - 1] <= '9'){ ji[zhi] = '1'; gg[zhi] = gg[zhi - 1]; }
                            else if (ji[zhi - 1] >= 'a'&&ji[zhi - 1] <= 'z'){ ji[zhi] = 'a'; gg[zhi] = gg[zhi - 1]; }
                            else if (ji[zhi - 1] >= 'A'&&ji[zhi - 1] <= 'Z'){ ji[zhi] = 'A'; gg[zhi] = gg[zhi - 1]; }
                            q++;
                            break;
                        }
                        if (ji[zhi] == '9'){ ji[zhi] = '0'; zhi++; }
                        else if (ji[zhi] == 'z'){ ji[zhi] = 'a'; zhi++; }
                        else if (ji[zhi] == 'Z'){ ji[zhi] = 'A'; zhi++; }
                        else { ji[zhi]++; break; }
                    }
                    zhi = q - 1;
                    for (i = 0; i < y; i++)
                    {
                        int flag = 0;
                        while (gg[zhi] == i&&zhi >= 0)
                        {
                            printf("%c", ji[zhi]);
                            zhi--;
                            flag = 1;
                        }
                        if (flag == 0) printf("%c", s[i]);
                    }
                    printf("
    ");
                    bu++;
                    if (bu >= m) break;
                }
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    Spring包的依赖关系以及提供下载
    正则
    Spring征服数据库
    Java之多线程同步基础
    Java之多线程优先级基础
    ColorMatrixFilter色彩矩阵滤镜
    AS3.0 位图翻转、旋转
    AS3.0 自定义右键菜单类
    精确选择识别png图片有像素的区域
    AS3动画效果常用公式
  • 原文地址:https://www.cnblogs.com/zufezzt/p/4448744.html
Copyright © 2020-2023  润新知