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; }