• Codeforces Round #659 (Div. 2) C. String Transformation 1


    题意:每次可以将较小的字母反转成较大的字母

    贪心一下,尽量把操作挪到最大的字母那边 ,然后统计答案

    #include <bits/stdc++.h>
    
    using namespace std;
    int x[20][20];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            for(int i=0; i<20; i++)
            for(int j=0; j<20; j++) x[i][j]=0;
            int n;
            cin>>n;
            string a,b;
            cin>>a>>b;
            int flag=0;
            for(int i=0; i<n; i++)
            {
                if(a[i]>b[i])
                {
                    flag=-1;
                    break;
                }
                if(a[i]!=b[i])
                    x[a[i]-'a'][b[i]-'a']++;
            }
            if(flag==-1)
            {
                cout<<flag<<endl;
                continue;
            }
            int ans=0;
            for(int i=0; i<20; i++)
                for(int j=0; j<20; j++)
                {   if(i==19&&x[i][j])
                     {
                         ans++;
                         continue;
                     }
                    if(x[i][j])
                    {    ans++;
                        for(int ii=j+1; ii<20; ii++)
                        {
                            if(x[i][ii])
                            {
                                x[j][ii]++;
                            }
                        }
                        break;
                    }
                }
            cout<<ans<<endl;
        }
    }
  • 相关阅读:
    SQL注入(手工篇)
    sed命令
    交互输入与for语句
    编程原理
    grep与正则表达式
    重定向和管道符
    shell_oneday_历史命令相关
    python_01_初识python
    C# 上传文件
    C# in 参数化处理 (记)
  • 原文地址:https://www.cnblogs.com/acmLLF/p/13386943.html
Copyright © 2020-2023  润新知