rt,代码如下:
#include<bits/stdc++.h>
using namespace std;
bool a[3005],b[3005],c[3005],sss = 1; //定义三个bool数组,a,b,c分别代表初始输入的、反转用的、贮存字典序最小的
string s;
int p;
int main(){
cin>>s; // 先输入进字符串
int q = s.size();
for(int i = 0;i<q;i++){ //再遍历输进a,初始化c
a[i] = s[i];
c[i] = a[i];
}
for(int i = 0;i<q;i++){ //找出第一个‘1’,标记一下
if(a[i]){
p = i;
break ;
}
}
for(int i = p;i<q;i++){ //从p开始遍历
if(a[i]){ //如果是‘1’,就开始遍历
for(int j = 0;j<q;j++){ //初始化b
b[i] = a[i];
}
sss = 1; //初始化s,用来判断字典序是否更小
for(int j = i;j<(q-i)/2;j++){
for(int k = 0;k<q;k++){
if(b[k] == c[k]){
continue ;
}else if((b[k]>c[k] && k<i) || (-b[k]>c[k] && k<=j && k>=i)){
sss = 0; //若b的字典序高于c,则退出循环并将sss置为0
break;
}else{
continue;
}
}
if(sss){
for(int k = 0;k<q;k++){ //将b赋值进c
if(k<i) c[i] = b[i];
else c[i] = -b[i];
}
}
}
}
}
for(int i = 0;i<q;i++){ //输出
cout<<c[i];
}
return 0;
}
不知道为啥会WA,还有几个点TLE,是不是循环太多了?