求助复杂度分析
查看原帖
求助复杂度分析
438461
liu_chen_hao楼主2022/9/5 22:00

自我感觉复杂度不对,但确实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;
}
2022/9/5 22:00
加载中...