首页 > 其他 > 详细

A.Anagram

时间:2021-05-08 11:53:35      阅读:13      评论:0      收藏:0      [点我收藏+]

题目描述
给定两个字符串s1,s2,求把s1变成s2的最小步数,
s2可以任意改变顺序 比如ELLY要变成KRIS,可以把KRIS变成IRSK,那么就是把E变成K(只能向后变,比如要把B,变成A就需要25个步数),L变成R...最后的最小步数是29步
因为题目数据范围只有50可以使用一个一个枚举过

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
bool book[100];
int main()
{
    string s1, s2;
    while(cin >> s1 >> s2)
    {
        memset(book, 0, sizeof book);
        int res = 0;
        for(int i = 0; i < s1.size(); i ++ )
        {
            int min = 30, k;
            for(int j = 0; j < s2.size(); j ++ )
            {
                int x = s2[j] - s1[i];
                if(x < 0)x += 26;
                if(book[j] == 0 && min > x)
                {
                    min = x;
                    k = j;
                }
            }
            book[k] = 1;
            res += min;
        }
        cout << res << endl;
    }
    return 0;
}

A.Anagram

原文:https://www.cnblogs.com/jw-zhao/p/14743850.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!