[luogu] P1246 编码 dfs打表
作者:互联网
前言
d
f
s
dfs
dfs是真的好难
传送门 :
思路
因为数据长度只有 6 6 6 ,所以我们可以直接打表出来时间复杂度 O ( 2 26 ∗ 6 ) O(2^{26} *6) O(226∗6)
显然是可行的
所以我们可以对于每一个长度,我们都 d f s dfs dfs一遍,然后用 m a p < S t r i n g , i n t > map<String,int> map<String,int> 来
记录位置
CODE
void dfs( int l,int x,string temp)
{
if(x > l )
{
mp[temp] = ++cnt;
return;
}
char i ;
if(x == 1)
i = 'a';
else
i = temp[x-2]+1;
for(;i<='z';i++)
{
temp[x-1]=i;
dfs(l,x+1,temp);
}
}
void solve()
{
for(int i = 1;i<=6;i++)
{
string temp;
temp.resize(i);
dfs(i,1,temp);
}
string s;cin>>s;
cout<<mp[s]<<endl;
}
标签:map,26,string,temp,int,luogu,dfs,打表 来源: https://blog.csdn.net/qq_34364611/article/details/121874727