希望大佬帮我解析一下,感激不尽!!!! #include<bits/stdc++.h> using namespace std; int num[10]; int dp[3010][10]; int main() { string s; cin>>s; s=' '+s; for(int i=s.size()-1;i>=0;i--) { for(int j=0;j<=9;j++) dp[i][j]=num[j]; if(i!=0)num[s[i]-'a']=i; } vector<char> v; v.push_back('a'); v.push_back('b'); v.push_back('c'); v.push_back('d'); v.push_back('e'); v.push_back('f'); v.push_back('g'); v.push_back('h'); v.push_back('i'); int ans=0; do{ int flag=0; for(int i=0;i<9;i++) { flag=dp[flag][v[i]-'a']; if(flag==0) {ans--;break;} } ans++; }while(next_permutation(v.begin(),v.end())); cout<<ans<<endl; return 0; }
全部评论
(0) 回帖