POJ Encuentra El múltiple requiere dos BFS pincel *, nunca se encontró un problema

La idea básica:

Todavía pegado en el modelado, en lo personal siento que BFS debe prestar atención a qué aspectos:

1. El Estado debe encontrar una posible expansión del Estado, que puede repetirse;

2. límite, este problema por ejemplo, si una búsqueda amplia, que es 0 en módulo, si se utiliza una búsqueda profunda, que no hay desbordamiento, longlongs hasta 19;

 

Pero este tema no hay duda, es el problema indicador de memoria;

Veo doscientos tipos pensamiento Tarsus propios de los problemas de división, pero el recuerdo de la explosión, de acuerdo con el seguimiento de la más alta 63MB, o no puedo averiguar lo que estaba ocurriendo;

 

Puntos clave:

No;

 

Adjuntar código en cuestión:

#include <iostream> 
#include <string> 
#include <vector> 
#include <cola> 
using namespace std; 

const int maxN = 101; 

devide bool (string s, int num) { 
	//检验是否能被整除
	int r = 0; 
	for (int i = 0; i <s.size (); i ++) { 
		//对于大数大头在前面; 
		int temp = (s [i] - '0') + r * 10; 
		r = temp% num; 
	} 
	Si (r == 0) 
		return true; 
	cosa 
		falsa retorno; 
} 

BFS cuerda (int n) { 
	string s = "1"; 
	cola de <cadena> q; 
	q.push (s); 
	mientras que (q.empty ()) { 
		string str = q.front (); 
		q.pop (); 
		for (int i = 0; i <2; i ++) {
			si (i == 0) {  
				str + = "0";
			} 
			else { 
				str + = "1"; 
			} 
			Si (devide (str, n)) 
				str retorno; 
			q.push (str); 
		} 
	} 
} 

Int main () { 
	int n; 
	mientras que (cin >> n) { 
		si (n == 0) 
			return 0; 
		tribunal << BFS (n) << endl; 
	} 
	Return 0; 
}

  

Supongo que te gusta

Origin www.cnblogs.com/songlinxuan/p/12444458.html
Recomendado
Clasificación