优化后的暴搜,没有 TLE,但是第二个点 WA 了。
#include<bits/stdc++.h>
using namespace std;
int a[10]={0,26,325,2600,14950,65780,230230},sum;
string s,k;
void dfs(char c,string now){
if(now==s){
cout<<sum+a[s.size()-1]+1;
exit(0);
}
if(now.size()==s.size()){
sum++;
return;
}
for(char i=c+1;i<='z';i++){
k=now;
dfs(i,k+i);
}
}
int main(){
cin>>s;
for(int i=1;i<=6;i++)a[i]+=a[i-1];
dfs('a'-1,"");
return 0;
}