解题思路:

        1.输入s
        2.用set保存所有长度为8的s的子串 //方便判断

        3.输入n,循环n次:

            1).输入密码串s

            2).排序s,方便用库函数遍历所有排列组合

            3).遍历时,如果st中有这个字符串则ans++

        4.输出ans
注意事项:
        
参考代码:

#include<bits/stdc++.h>
using namespace std;

string s;
set<string> st;
int main(){
    cin>>s;
    int n=s.length();
    for(int i=0;i+7<n;i++)st.insert(s.substr(i,8));//set长度为8的子串
    cin>>n;
    int ans=0;
    while(n--){
    	cin>>s;
    	sort(s.begin(),s.end());
    	do{
    		if(st.count(s))ans++;
    	}while(next_permutation(s.begin(),s.end()));
    }
    cout<<ans<<endl;
}


 

0.0分

4 人评分

  评论区

蛮高级的,但耗时还是比普通做法高那么一丢丢,哈哈哈,蛮好的
2020-08-29 10:54:58
很好利用了next_permutation()函数的用法
2020-08-07 17:11:32
这个牛批
2019-05-14 15:28:16
  • «
  • 1
  • »