给你一个字符串,让你从新给这些字符排序,使得排序后回文子串的个数尽可能多,多解输出一组便可c++
仍是太弱啦,看了题解spa
首先只有一种字符$a$,那么就是$aa$code
考虑加入一个新的字符,$aab$和$aba$blog
原回文串的回文子串的个数是$3$排序
那么插入中间获得的回文子串的个数是$3$ci
而插入一边获得的回文子串的个数是$4$字符串
若是这个原回文字符是奇数个,即$aaa$get
考虑将$b$插入其中,$abaa$或$aaab$it
其回文子串个数分别是$6$和$7$io
可见插入中间其获得的方案数反而不会增长,甚至会致使其中的有些字符会不匹配
结论是:使每个字符尽可能独立获得的答案才是最优的
#include<bits/stdc++.h> using namespace std; int n; char a[100005]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n); for(int i=1;i<=n;i++) cout<<a[i]; return 0; }