本文共 684 字,大约阅读时间需要 2 分钟。
一道简单的贪心题,每次都从两端开始找,找到一个小的就放到T的末尾,然后再重新寻找。
需要注意的是相等的情况,比如这三种情况 AABAA, AABCAA, AACBAA。因为两边相等,所以需要继续向下判断,直到找到一个不相等的,但是如果用递归的话太慢了,本题就是通过一个循环来进行寻找,这也是循环中为什么没有等于的条件的原因。#include#include #include using namespace std;int main(){ int n = 0, cnt = 0; vector initial; char d = '\0'; scanf("%d", &n); int a = 0, b = n - 1; for (int i=0; i initial[b-i]) { flag = true; break; } else if (initial[a+i] < initial[b-i]) { flag = false; break; } } if (flag == true) { printf("%c", initial[b--]); cnt++; } else { cnt++; printf("%c", initial[a++]); } if (cnt%80 == 0) { printf("\n"); } } return 0;}
转载地址:http://sgaq.baihongyu.com/