Codeforces Round #467 (Div. 1). C - Lock Puzzle
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
const int maxLength = 2005;
char s[maxLength], t[maxLength];
int letterOfS[30];
int letterOfT[30];
std::vector<int> result;
void shift(char* seqence, int location) {
    std::string tt = seqence;
    tt = tt.substr(location) + tt.substr(0, location);
    std::reverse(tt.begin(), tt.begin() + tt.length() - location);
    for (int i = 0, length = tt.length(); i < length; ++i) {
        seqence[i] = tt[i];
    }
    //   seqence[tt.length()] = 0;
    result.push_back(tt.length() - location);
    //   printf("%s\n", seqence);
}
void solveChange(int length) {
    int okLength = 0;
    for (int i = 0; i < length; ++i) {
        char targetLetter = t[i];
        int LocationOftargetInS;
        for (int j = 0; j < length - i; ++j) {
            if (s[j] == targetLetter) {
                LocationOftargetInS = j;
                break;
            }
        }
        //   printf("%d\n", LocationOftargetInS);
        shift(s, LocationOftargetInS + 1);
        shift(s, length - 1);
        shift(s, 0);
        //    printf("\n");
    }
}
int main() {
    int n;
    while (~scanf("%d", &n)) {
        result.clear();
        memset(letterOfS, 0, sizeof(letterOfS));
        memset(letterOfT, 0, sizeof(letterOfT));
        scanf("%s %s", s, t);
        for (int i = 0; i < n; ++i) {
            letterOfS[s[i] - 'a']++;
        }
        for (int i = 0; i < n; ++i) {
            letterOfT[t[i] - 'a']++;
        }
        bool canChange = true;
        for (int i = 0; i < 26 && canChange; ++i) {
            if (letterOfS[i] != letterOfT[i]) {
                canChange = false;
            }
        }
        if (canChange) {
            solveChange(n);
            printf("%d\n", (int)result.size());
            for (int i = 0; i < result.size(); ++i) {
                printf("%d ", result[i]);
            }
            printf("\n");
        } else
            printf("-1\n");
    }
    return 0;
}
Codeforces Round #467 (Div. 1). C - Lock Puzzle的更多相关文章
- Codeforces Round #467 (Div. 2)  E	-Lock Puzzle
		Lock Puzzle 题目大意:给你两个字符串一个s,一个t,长度<=2000,要求你进行小于等于6100次的shift操作,将s变成t, shift(x)表示将字符串的最后x个字符翻转后放到 ... 
- Codeforces Round #467 (div.2)
		Codeforces Round #467 (div.2) 我才不会打这种比赛呢 (其实本来打算打的) 谁叫它推迟到了\(00:05\) 我爱睡觉 题解 A. Olympiad 翻译 给你若干人的成绩 ... 
- Codeforces Round #467 Div.2题解
		A. Olympiad time limit per test 1 second memory limit per test 256 megabytes input standard input ou ... 
- Codeforces Round #172 (Div. 2) C. Rectangle Puzzle 数学题几何
		C. Rectangle Puzzle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/281/p ... 
- Codeforces Round #467 (Div. 2) B. Vile Grasshoppers
		2018-03-03 http://codeforces.com/problemset/problem/937/B B. Vile Grasshoppers time limit per test 1 ... 
- Codeforces Round #467 (Div. 1) B. Sleepy Game
		我一开始把题目看错了 我以为是博弈.. 这题就是一个简单的判环+dfs(不简单,挺烦的一题) #include <algorithm> #include <cstdio> #i ... 
- Codeforces Round #467 Div. 1
		B:显然即相当于能否找一条有长度为奇数的路径使得终点出度为0.如果没有环直接dp即可.有环的话可以考虑死了的spfa,由于每个点我们至多只需要让其入队两次,复杂度变成了优秀的O(kE).事实上就是拆点 ... 
- Codeforces Round #467 (Div. 2) B. Vile Grasshoppers[求去掉2-y中所有2-p的数的倍数后剩下的最大值]
		B. Vile Grasshoppers time limit per test 1 second memory limit per test 256 megabytes input standard ... 
- Codeforces Round #467 (Div. 2) A. Olympiad[输入一组数,求该数列合法的子集个数]
		A. Olympiad time limit per test 1 second memory limit per test 256 megabytes input standard input ou ... 
随机推荐
- 如何使用 VS生成动态库?
			如何使用 VS生成动态库? //.cpp 文件默认定义了 __cplusplus 宏 #ifdef __cplusplus extern "C"{ #endif xxx #ifde ... 
- JavaScript网页全屏API
			在大多数的浏览器中都有实现网页全屏显示的功能,并且大部分浏览器实现全屏显示和退出全屏显示的快捷键通常是F11和Esc两个按键.如今,W3C已经制定了关于网页全屏显示的API,利用这个API 可以实现网 ... 
- [Note] 计算机网络的应用层
			应用层 原理 结构和模型 客户-服务器体系结构(client-server architecture ) 通信不是直接的,需要通过服务器转发 经常会在服务器积压大量的负载 服务器(server) 服务 ... 
- AES-256加密解密
			/// <summary> /// AES-256加密 /// </summary> /// <param name="toEncrypt">& ... 
- (转)Hanoi塔问题分析
			转自:http://shmilyaw-hotmail-com.iteye.com/blog/2077098 简介 关于Hanoi塔问题的分析,在网上的文章都写烂了.之所以打算写这篇文章,更多的是针对这 ... 
- IP地址 A\B\C类
			互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address),在Internet上,一种给主机编址的方式.常见的IP地址,分为 ... 
- java.text.ParseException: Unparseable date: "2015-06-09 hh:56:19"
			1.错误描述 [DEBUG:]2015-06-09 16:56:19,520 [-------------------transcation start!--------------] java.te ... 
- C#:几种数据库的大数据批量插入
			在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ... 
- TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。
			1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClick ... 
- OpenStack_I版 4.Dashboard部署
			由python的DjangoWeb框架开发的 使用keystone默认的角色来访问各种服务 Dashboard安装 Dashboard是openstack的Web管理界面,需要将它 ... 
