最簡單的搜尋 01搜尋

2021-08-15 18:22:17 字數 1372 閱讀 3609

一.迴圈實現列舉

列舉:在某種條件下產生所希望資料

fordo...while

while

語法:初始化

迴圈條件

步長控制

二.從列舉到搜尋

搜尋:已經存在的資料中按某種查詢規律找出所希望得到的資料或滿足條件的某種結果。

1.從a[3][4]中找出最大元素及其行列值

#include "stdio.h" 

int main();

int x=0,y=0,max = a[0][0];

int i,j;

for(i = 0 ; i < 3; i ++)

} printf("max = %d,x = %d,y = %d",max,x,y);

return 0;

}

這個例子說明:搜尋也可以用迴圈來實現。

2. 再看乙個複雜一點的例子:求從1到5中任選2個數組合的序列。

定義兩個變數i,j,用雙層迴圈解決問題

#include "stdio.h"

int main()

3.若是從n中選擇3個,則再定義乙個k增加一層迴圈

#include "stdio.h"

int main()

4.若要從n個中選出m個,**怎麼寫?

#include "stdio.h"

int flag[10000];

void find(int n,int m,int c,int start)

printf("\n");

return;

} flag[start] = 1;

c++;

find(n,m,c,start +1);

flag[start] = 0;

c--;

find(n,m,c,start +1);

} int main()

4.上面的演算法不夠效率,下面借助資料結構棧來實現組合序列:

#include "stdio.h"

int stack[100000] ;

int top = 0;

void find(int n,int m,int start)

stack[top++] = start + 1;

find(n,m,start+1);

top --;

find(n,m,start +1);

} int main()

最簡單的搜尋演算法

目前自己用的比較多的是廣搜bfs 以下是別的大神們的詳細講解 原 bfs可用於解決2類問題 從a出發是否存在到達b的路徑 從a出發到達b的最短路徑 這個應該叫最少步驟合理 其思路為從圖上乙個節點出發,訪問先訪問其直接相連的子節點,若子節點不符合,再問其子節點的子節點,按級別順序依次訪問,直到訪問到目...

簡單搜尋01 N皇后問題

題目大意 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。解題思路 回溯法。要先打表,不然tle。自覺已經精簡到最簡了結果還是tle的痛苦人民得到大佬的提示要先...

51nod 最複雜的數 (簡單搜尋)

基準時間限制 1 秒 空間限制 131072 kb 分值 40 把乙個數的約數個數定義為該數的複雜程度,給出乙個n,求1 n中複雜程度最高的那個數。例如 12的約數為 1 2 3 4 6 12,共6個數,所以12的複雜程度是6。如果有多個數複雜度相等,輸出最小的。input 第1行 乙個數t,表示後...