解题思路:参考楼上JAVA的
注意事项:
参考代码:
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
typedef long long ll;
typedef pair<int,int> P;
#define pi 3.141592653589793238
int mov[4][2]= {{-1,0},{0,1},{1,0},{0,-1}};
int times[30];
string s;
int fun(string order){
int fir=times[order[0]-'A']-1;
int sec=fir+times[order[1]-'A'];
int thir=s.length()-1;
int res=0;
int L=fir+1;
int R=thir;
string temp=s;
for(int i=0;i<=fir;i++){
if(temp[i]==order[1]){
while(temp[L]!=order[0]){
L++;
}
swap(temp[i],temp[L]);
L++;
res++;
}else if(temp[i]==order[2]){
while(temp[R]!=order[0]){
R--;
}
swap(temp[i],temp[R]);
R--;
res++;
}
}
R=thir;
for(int i=fir+1;i<=sec;i++){
if(temp[i]==order[2]){
while(temp[R]!=order[1]){
R--;
}
//swap(temp[i],temp[R]);
R--;
res++;
}
}
return res;
}
int main()
{
freopen("C:/Users/86183/Desktop/input.txt","r",stdin);
//freopen("C:\\Users\\86183\\Desktop\\output.txt","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
while(cin>>s){
int len=s.length();
memset(times,0,sizeof(times));
for(int i=0;i<len;i++){
times[s[i]-'A']++;
}
int res=fun("ABT");
res=min(res,fun("ATB"));
res=min(res,fun("BAT"));
res=min(res,fun("BTA"));
res=min(res,fun("TAB"));
res=min(res,fun("TBA"));
cout<<res<<endl;
}
return 0;
}
0.0分
1 人评分
点我有惊喜!你懂得!浏览:2114 |
C语言训练-阶乘和数* (C语言代码)浏览:1060 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:530 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:488 |
C语言训练-立方和不等式 (C语言代码)浏览:779 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:543 |
C语言训练-素数问题 (C语言代码)浏览:1065 |
买不到的数目 (C++代码)浏览:909 |
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1674 |
矩阵乘法 (C++代码)浏览:1662 |