[Copa Blue Bridge] 2015 búsqueda final de texto cifrado (mapa)

Descripción del Título

Holmes recibió un documento de Star X, todo en minúsculas.
Su asistente proporcionó otra información: muchas listas de contraseñas de longitud 8.
Holmes descubrió que estas contraseñas se habían barajado y ocultado en la información anterior.
Escriba un programa para buscar posibles ubicaciones de contraseñas ocultas en el primer documento.
Considere todas las posibles permutaciones de contraseñas.

ingresar

Ingrese la primera línea: una cadena s, todas compuestas por letras minúsculas, longitud menor a 1024 * 1024,
seguida de un número entero n, que indica que hay n líneas de contraseñas, 1 <= n <= 1000
seguido de n líneas de cadenas , Están compuestas por letras minúsculas, con una longitud de 8

Producción

Un número entero que representa el número total de coincidencias en s para todas las permutaciones de cada fila de contraseñas.

Entrada de muestra

aaaabbbbaabbcccc
2
aaaabbbb
abcabccc

Salida de muestra

4

inmediato

La primera contraseña se combinó 3 veces y la segunda contraseña se combinó 1 vez, un total de 4 veces.


Código:

Debido a que la contraseña se puede organizar, siempre que el número de caracteres que han aparecido sea igual a ciertos ocho dígitos en s, representa una respuesta.

#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
typedef long long ll;
string s,t;
map<string,int> mp;
ll n,ans=0;
 
int main() 
{
    
    
	cin>>s>>n;

	for(int i=0;i<=s.size()-8;i++)
	{
    
    
		string x=s.substr(i,8); //每次切8个
		sort(x.begin(),x.end()); //排序
		mp[x]++; //记录出现次数
	}
	
	for(int i=0;i<n;i++)
	{
    
    
		cin>>t;
		sort(t.begin(),t.end()); //排序
		ans+=mp[t]; //加上出现过的次数
	}
	
	cout<<ans;
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_45260385/article/details/109406630
Recomendado
Clasificación