古典的なBFS
どのくらいの水の4つだけ起動変更するには、ライン上に4ための4つで検索する非常に
1の#include <iostreamの> 2の#include <CStringの> 3。の#include <cstdioを> 4。の#include <アルゴリズム> 5。の#include <キュー> 6。の#include <cmath> 7。 使用した 名前空間STD; 8 INT T; 9 int型N-、M ; 10 INTブック[ 100001 ] = { 0 }; // レコードがオーバーが見つかった 。11 構造体ノード// Xは現在の数を表し、現在表すステップ番号 12である { 13で のint X; 14 int型のステップと 15 }; 16キュー<ノード> Q; // 広い探索キュー 17 BOOLの zyc_pd(INT X)// 決定素数 18である { 19 IF(Xの== 0 || == X 1)リターン falseに、 20は 他 IF(X == 2 || == X 3)リターン trueに、 21は 他の 22は 、{ 23である ため(int型 I = 2、Iは<=(INT)SQRT(X); I ++は) 24 { 25 場合(Xの%iは== 0)を返す 偽。 26 } 27 リターン 真。 28 } 29 30 } 31 空隙BFS() 32 { 33 のint X1、STEP1、I。 34 ながら(!q.empty()) 35 { 36 ノードTMP。 37 = TMP q.front()。 38 q.pop()。 39 ×1 = tmp.x。// 赋初始值 40 = tmp.stepステップ1; // 割り当てられた初期値 41である // COUTのX1 << << ENDL; 42である IF(X1の== mの)// 検索の結果場合、出力 43は 、{ 44は COUTステップ1 << << ENDL; 45 戻り; 46である } 47の ための(I = 1 ; I <= 9 ; I + = 2)// からのビット奇数九から一を(素数であるように) 48 { 49 のint YY = X1 / 10 * 10 + I。// ビット+ビットに検索を削除する 50 IF(!! YY = X1 &&ブック[YY] && zyc_pd(YY))// 前のステップ+検索+を繰り返さないが素数である数と同じではない 51は 、{ 52で ブック[YY] = 1 ; // タグが上に発見された 53である ノードTEMP 、 54である ; temp.x = YY //は現在の値に加えられた 55 temp.step + =ステップ1 。1 ; // 検索プラス1。 れている56 q.push(TEMP); 57れる } 58 } 59 のための(I = 0 ;私は< = 9 ; I ++)// 10同様に 60 { 61 INT YY = X1 / 100 * 100 + iが* 10 + X1の%10 。 62 であれば(YY = X1 &&ブック[YY] &&!zyc_pd(YY)) 63 { 64 書籍[YY] = 1 。 65 ノードの一時。 66 temp.x = YY。 67 temp.step = STEP1 + 1 。 68 q.push(TEMP)。 69 } 70 } 71 用(i = 0 ; I <= 9; i)は++ // 百位同理 72 { 73 のint YY = X1 / 1000年 * 1000年 + I * 100 + X1%100 。 74 であれば(YY = X1 &&ブック[YY] &&!zyc_pd(YY)) 75 { 76 書籍[YY] = 1 。 77 ノードの一時。 78 temp.x = YY。 79 temp.step = STEP1 + 1 。 80 q.push(TEMP)。 81 } 82 } 83 用(i = 1 ; iが<= 9 ; iは++)// 千位 84 { 85 のint YY = i *が1000年 + X1%千。// 只换千位 86 の場合(YY = X1 &&ブック[YY] &&!!zyc_pd(YY)) 87 { 88 本[YY] = 1 ; 89 ノードの一時。 90 temp.x = YY。 91 temp.step = STEP1 + 1 。 92 q.push(TEMP)。 93 } 94 } 95 } 96 COUT << " 不可" << ENDL; // 出力不可検索されない場合 97 リターン; 98 } 99 INT メイン() 100 { 101 CIN >> T; 102 ながら(T-- ) 103 { 104 一方(q.empty()!)q.pop(); // キュー空 105 CIN >> N- M; 106 のmemset(書籍、0、はsizeof(書籍)); //本アレイ初期化 107 書籍[N] = 1 ; // ブック[n]は、システム上に見出される 108 ノードTMP; 109 tmp.x = N; // 現在の数N 110 tmp.step = 0 ; // 現在のステップ番号0 111 q.push(TMP); 112 BFS(); 113 } 114 戻り 0 ; 115 }
論文をギャングしてください(とにかく、私はそれが論文を何を意味するのか知りません)