自我感觉复杂度不对,但确实AC了,求大佬分析复杂度,谢谢:
#include <bits/stdc++.h>
#define pb(x) push_back(x)
#define pf(x) push_front(x)
#define ppb() pop_back()
#define ppf() pop_front()
#define mk(x,y) make_pair(x,y)
#define ll long long
#define ld long double
using namespace std;
const int N=131705;
int t,n;
string s,in;
int dfs(char c, int l, int r)
{
if(l==r)
{
if(s[l]==c) return 0;
return 1;
}
int mid=l+r>>1;
int ls=0,rs=0;
for(int i=l; i<=mid; i++)
if(s[i]!=c) ++ls;
for(int i=mid+1; i<=r; i++)
if(s[i]!=c) ++rs;
return min(ls+dfs(c+1,mid+1,r),rs+dfs(c+1,l,mid));
}
int main()
{
ios::sync_with_stdio(false);
cin>>t;
while(t--)
{
cin>>n>>in;
s=" ";
s+=in;
cout<<dfs('a',1,n)<<endl;
}
return 0;
}