标签:贪心
背景:第一次没有考虑到相等的情况,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