提交时间:2022-07-13 12:19:12
运行 ID: 51623
#include <iostream> using namespace std; int n,k,t,maxn,vis[27]; string s,ans; inline void dfs(int x,int cnt,string l) { if(x == n) { if(cnt > maxn) { maxn = cnt; if(t) ans = l; } else if(cnt == maxn && t == 2 && l < ans) ans = l; return ; } if(cnt + n - x < maxn) return ; if(!vis[s[x] - 'a']) { vis[s[x] - 'a'] = 1; dfs(x + 1,cnt + 1,l + s[x]); vis[s[x] - 'a'] = 0; } else if(l[cnt - 1] == s[x]) dfs(x + 1,cnt + 1,l + s[x]); dfs(x + 1,cnt,l); } int main() { cin >> n >> k >> t; cin >> s; dfs(0,0,""); cout << maxn << endl; if(t) cout << ans << endl; return 0; }