• 死磕了一题模拟 A掉的时候我是爽的


    ZOJ 3490
    没有题解。
    一句话,要么贴代码,要么自己打。

    #include<cstdio>
    #include<iostream>
    #include<vector>
    #include<set>
    #include<map>
    #include<math.h>
    #include<queue>
    #include<stdlib.h>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long LL;
    using namespace std;
    #define INF 0x3f3f3f3f
    #define N 10000000
    
    char s[110];
    int ans[3][110];
    int p1;
    int p2;
    int n;
    int JUDGE(int x)
    {
        if(x>='a'&&x<='z')
            return 1;
        if(x>='A'&&x<='Z')
            return 2;
        if(x>='0'&&x<='9')
            return 3;
        return 0;
    }
    int num;
    int j_1,j_2,k;
    
    void sk(char h)
    {
        int flag=0;
        for(int i=j_1+1; i<num; i++)
        {
            if(JUDGE(ans[1-k][i]))
            {
                flag=1;
                break;
            }
        }
        if(flag==0)
        {
            if(h=='0')
                ans[k][j_2++]='1';
            else if(h=='a')
                ans[k][j_2++]='a';
            else
                ans[k][j_2++]='A';
        }
    }
    
    
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s%d",s,&n);
            int len;
    
    
            len=strlen(s);
            num=0;
            k=0;
            for(int i=len-1; i>=0; i--)
            {
                ans[0][num++]=s[i];
            }
            int t=-1;
            for(int i=0; i<num; i++)
            {
                if(JUDGE(ans[0][i]))
                {
                    t=i;
                    break;
                }
            }
            int x;
            int bb;
            bb=1;
            if(t==-1)
            {
                for(int i=1; i<=n; i++)
                {
                    k=1-k;
                    j_1=j_2=0;
                    x=ans[1-k][j_1]+1;
                    ans[k][j_2++]=x;
                    j_1++;
                    while(j_1<num)
                    {
                        ans[k][j_2++]=ans[1-k][j_1];
                        j_1++;
                    }
                    num=j_2;
                    for(int j=j_2-1; j>=0; j--)
                        printf("%c",ans[k][j]);
                    printf("
    ");
                    bb=i+1;
                    if(x=='0'||x=='a'||x=='A')
                    {
                        t=0;
                        break;
                    }
                }
            }
            int flat;
            for(int i=bb; i<=n; i++)
            {
                k=1-k;
                j_1=j_2=0;
                flat=0;
                while(j_1<num)
                {
                    x=ans[1-k][j_1];
                    if(j_1<t)
                        ans[k][j_2++]=x;
                    else if(j_1==t)
                    {
                        x+=1;
                        if(x==('z'+1))
                        {
                            ans[k][j_2++]='a';
                            flat=1;
                            sk('a');
                        }
                        else if(x==('Z'+1))
                        {
                            ans[k][j_2++]='A';
                            flat=1;
                            sk('A');
                        }
                        else if(x==('9'+1))
                        {
                            ans[k][j_2++]='0';
                            flat=1;
                            sk('0');
                        }
                        else
                            ans[k][j_2++]=x;
                    }
                    else
                    {
                        if(JUDGE(x))
                        {
                            if(flat)
                            {
                                x+=1;
                                if(x==('z'+1))
                                {
                                    ans[k][j_2++]='a';
                                    sk('a');
                                }
                                else if(x==('Z'+1))
                                {
                                    ans[k][j_2++]='A';
                                    sk('A');
                                }
                                else if(x==(1+'9'))
                                {
                                    ans[k][j_2++]='0';
                                    sk('0');
                                }
                                else
                                {
                                    ans[k][j_2++]=x;
                                    flat=0;
                                }
                            }
                            else
                            {
                                ans[k][j_2++]=x;
                            }
                        }
                        else
                        {
                            ans[k][j_2++]=x;
                        }
                    }
                    j_1++;
                }
                for(int j=j_2-1; j>=0; j--)
                {
                    printf("%c",ans[k][j]);
                }
                printf("
    ");
                num=j_2;
            }
            printf("
    ");
        }
        return 0;
    }
    
    /*
    
    100 5
    1 12
    **9**9 10
    
    
    :-( 1
    cirno=8 2
    X 3
    *********/
    /*
    */
  • 相关阅读:
    恢复误删的进程在使用的文件
    Linux系统CPU频率调整工具使用
    ubuntu opencv的使用
    ubuntu14.04 安装PCL
    boost 错误报告
    Ubuntu 查看软件版本
    Ubuntu14.04下安装glog
    PCL 编译中遇到 error C4996: 'pcl::SAC_SAMPLE_SIZE'
    EXE DLL等可执行程序添加版本号版权等信息
    ubuntu16.04中将python3设置为默认
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934573.html
Copyright © 2020-2023  润新知