记得删掉时间测试
#include<cstdio> #include<iostream> #include<ctime> using namespace std; char s[2005]; int main(void) { int n; cin >> n; getchar(); for (int i = 0; i < n; i++) { scanf("%c", &s[i]); getchar(); } int a = 0, b = n - 1;//分别用a和b指向字符的首尾 int ans = 0; while (a <= b) { bool left = false;//当前面的字符比后面的小时,输出小字符并且将指向首部的变量向后移动一位,前面字符比后面大时相反,如果相等就比较他们的下一个字符 for (int i = 0; a + i <= b; i++)//使用布尔运算来判断比直接输出速度快 { if (s[a + i] < s[b - i]) { left = true; break; } if (s[a + i] > s[b - i]) { left = false; break; } } ans++; if (left)putchar(s[a++]); else putchar(s[b--]); if (ans % 80 == 0)cout << endl; } cout << endl; printf("%.2lf", (double)clock() / CLOCKS_PER_SEC); return 0; }
原文:https://www.cnblogs.com/loliconsk/p/14385902.html