题意:
给定两个字符串,每次可以交换相邻两个字符,给出任意一组交换次数小于1e4的方案使得a串成为b串,输出交换的次数与位置,无解输出-1

n<=50

思路:每次找到第一个不相同的字符,从后面找到一个相同的换上来

若找不到相同的则输出-1

 #include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef vector<int> VI;
#define fi first
#define se second
#define MP make_pair const int N=;
int c[N];
char a[N],b[N];
int n; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} int main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
scanf("%d",&n);
scanf("%s",b+);
scanf("%s",a+);
int flag=;
for(int i=;i<=n;i++)
if(a[i]!=b[i]) {flag=; break;}
int ans=;
int noans=;
while(flag)
{
int k=;
flag=;
for(int i=;i<=n;i++)
if(a[i]!=b[i]){k=i; flag=; break;}
if(!k) break;
int f=;
for(int i=k+;i<=n;i++)
if(b[i]==a[k]){f=i; break;}
if((k)&&(!f)) {noans=; break;}
else
{
for(int j=f-;j>=k;j--)
{
c[++ans]=j;
char t=b[j+];
b[j+]=b[j];
b[j]=t;
}
}
}
if(noans) printf("-1");
else
{
printf("%d\n",ans);
for(int i=;i<=ans;i++) printf("%d ",c[i]);
}
return ;
}

最新文章

  1. 让dede运行php代码和mysql语句
  2. C++string中用于查找的find系列函数浅析
  3. sql server 2008安装过程中服务器配置出错
  4. sdutoj 2154 Shopping
  5. VIM配置(转载)
  6. memcached linux / win32 1.4.13
  7. 在Delphi中实现HexToStr函数和StrToHex函数
  8. Android 使用SpannableString显示复合文本
  9. Mocha JavaScript TDD
  10. SQL语法语句总结
  11. 【数学建模】【APIO2015】Palembang Bridges
  12. [经验]怎么删除“通过QQ/TIM发送到”右键菜单
  13. 不使用DataContext直接将ViewModels绑定到ItemsControl控件
  14. Mysql 从入门到遗忘
  15. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第三集之磁盘分区】
  16. Thrift 安装及使用
  17. 【docker】docker限制日志文件大小的方法+查看日志文件的方法
  18. day11:装饰器
  19. 转:ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)
  20. (转载)es进行聚合操作时提示Fielddata is disabled on text fields by default

热门文章

  1. linux交换分区调整
  2. 01_2_Servlet简介
  3. QQ 发送邮件
  4. 使用MySQL yum源安装MySQL
  5. LeetCode1089复写零
  6. Eclipse使用Mybatis-Generator插件
  7. mysql替换表中某字段的某值
  8. Thinkphp5 同时连接两个库
  9. python-numpy-pandas
  10. json.dumps ensure_ascii 方法