标签:贪心
背景:第一次没有考虑到相等的情况,wa了,改正后re了几次。。。
思路:贪心思想,但是当两边都相等的时候选哪一边才是关键,这是我的处理方法是,继续对2和n-1个字符比较,如果2小就从左边开始,n-1小就从右边开始,如果还是相等就继续比较2和n-2........
书上的思想也是类似原理。
我的代码:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main(void){
int n;
while(cin >> n) {
char c;
string s,t;
for(int i = 0; i < n; i++) {
cin >> c;
s += c;
}
int i = 0 , j = n - 1;
while(true) {
if(i == j) {
t += s[i];
break;
}
bool ok = false;
if(s[i] == s[j]) {
int x = i , y = j;
for(;x != y;x++,y--) {
if(s[x] != s[y]) {
if(s[x] < s[y]) ok = true;
break;
}
}
}
if(s[i] < s[j] || ok){
t += s[i];
i++;
}else {
t += s[j];
j--;
}
}
for(int i = 0,j = 0; i <= 80; i++) {
if(j + i >= t.size()) break;
if(i == 80){
putchar('\n');
j += 80;
i = -1;
continue;
}
cout << t[j+i];
}
cout << endl;
}
return 0;
}
标签:贪心
原文地址:http://blog.csdn.net/jibancanyang/article/details/44977073