挑战程序设计竞赛
贪心
注意:
每80个字符要换行
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int main(){
cin >> n;
string s;
char c;
for(int i = 0; i < n; i++){
cin >>c ;
s += c;
}
//如果首尾字符相同时,我们希望能够尽早使用较小的字符,
//所以就要比较下一个字符的大小,下一个字符也可能相同,则一直比较到不同为止
int i = 0, j = n -1, cnt = 0;
while(i <= j){
bool left = false;
for(int k = 0; i + k <= j; k++){ //选左边的
if(s[i+k] < s[j-k]){ //看左右两边,谁先出现较小的值,则当前就选这个一边
left = true;
break;
}else if(s[i+k] > s[j-k]){ //选右边的
left = false;
break;
}
}
cnt++;
if(left) putchar(s[i++]);
else putchar(s[j--]);
if(cnt%80 == 0) putchar('\n');
}
putchar('\n');
return 0;
}