cf936c Lock Puzzle

ref

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
int n;
char su[2005], sv[2005];
vector<int> vec;
void shift(int x){
    if(x==0)    return ;
    reverse(su+1, su+1+n);
    reverse(su+1+x, su+1+n);
    vec.push_back(x);
}
int main(){
    cin>>n;
    scanf("%s", su+1);
    scanf("%s", sv+1);
    for(int i=1; i<=n; i++){
        int j=i;
        for(; j<=n; j++)
            if(su[j]==sv[n-i+1])
                break;
        if(j==n+1){
            printf("%d\n", -1);
            return 0;
        }
        shift(n);
        shift(j-1);
        shift(1);
    }
    cout<<vec.size()<<endl;
    for(int i=0; i<vec.size(); i++)
        cout<<vec[i]<<" ";
    cout<<endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/poorpool/p/9010184.html