题目链接:http://codeforces.com/contest/1009/problem/B
这道题只需要保证0和2的相对位置不变,所有的1都放在第一次出现的2前面即可。
(c++是有字符串类型的,string,可以用 length()获取字符串的长度。还有,只要按照顺序输出相应的字符串就可以,不一定非要用一个字符串记录完整的输出,什么交换啊移动啊,根本不需要那么麻烦的。)
#include <iostream>
using namespace std;
int main()
{
string s,ss="";
int len,i,m=0,temp;
cin>>s;
len=s.length();
for(i=0;i<len;i++){
if((s[i]=='0')||(s[i]=='2'))ss+=s[i];
else m++;
}
for(i=0;i<len;i++){
if(ss[i]=='0')cout<<ss[i];
else{
temp=i;
break;
}
}
while(m--)cout<<'1';
for(i=temp;i<ss.length();i++){
cout<<ss[i];
}
return 0;
}