题目来自 刘汝佳 所编著的《算法竞赛入门经典(第二版)》
题目描述:
输入案例:
2
CCTC
CGAGTCAGCT
输出案例:
CCCT
AGCTCGAGT
答案代码:
#include<iostream> #include<cstring> using namespace std; #define maxn 105 int Less(const char * s, int p, int q) { int n = strlen(s); for (int i = 0; i < n; i++) if (s[(p + i) % n] != s[(q + i) % n]) return s[(p + i) % n] < s[(q + i) % n]; return 0; } int main() { int T; char s[maxn]; cin >> T; while(T--) { cin >> s; int ans = 0; int n = strlen(s); for (int i = 1; i < n; i++) if (Less(s, i, ans)) ans = i; for (int i = 0; i < n; i++) putchar(s[(i + ans) % n]); putchar(' '); } return 0; }
希望有大神能够提供更好的算法思路!博主没能自己想出来方法(;′⌒`)。