1.佇列queue
#include
#include
using
namespace std;
intmain()
//佇列沒有clear()方法,可以這樣清空
while
(!q.
empty()
)return0;
}
2.書院主持人
北大附中書院有m個同學,他們每次都很民主地決策很多事情。按羅伯特議事規則,需要乙個主持人。同學們民主意識強,積極性高,都想做主持人,當然主持人只有一人。為了選出主持人,他們想到了乙個辦法並認為很民主。方法是:大家圍成一圈,從1到m為每個同學編號。然後從1開始報數, 數到n的出局。剩下的同學從下位開始再從1開始報數。最後剩下來的就是主持人了。現在已經把同學從1到m編號,並約定報數為n的出局,請程式設計計算一下,哪個編號的同學將會成為主持人。
#include
#include
using
namespace std;
intmain()
int cur=1;
while
(q.size()
>1)
else
} cout<
front()
<
}
3.迷宮問題
對於dfs要列舉所有的可能性,如果地圖過大,那麼效率很低
對於bfs是分層搜尋,因此第一次搜尋到終點時,當前搜素的層數就是最短路徑的長度
#include
#include
using
namespace std;
int n,m;
char maze[
105]
[105];
bool vis[
105]
[105];
int dir[4]
[2]=
,,,}
;//方向
boolin(
int x,
int y)
//節點
struct node};
intbfs
(int sx,
int sy)
else}}
}return-1
;}intmain()
}int x,y;
for(
int i=
0;i}
cout<<
bfs(x,y)
<
return0;
}/*樣例輸入:
5 6....s*
.**...
.*..*.
*..**.
.t....
樣例輸出:
7*/
4.一維座標的移動/*在長度為【0,n】的一維座標中,輸入a,b的位址,問能否從a到b。
移動方式:向前一步(座標+1),向後一步(座標-1),跳(座標*2)*/
#include
#include
#include
using
namespace std;
bool vis[
100]
;int
main()
if(now+
1<=n &&
!vis[now+1]
)if(now-
1>=0&&
!vis[now-1]
)if(now*
2<=n &&
!vis[now*2]
)}return0;
}/*樣例輸入:
10 2 7
樣例輸出
3*/
5.密碼鎖
}/*樣例輸入:
1234
2144
樣例輸出:
2*/6.三階平面魔方
}/*樣例輸入:
412756
389樣例輸出:
2 */
7.吃糖的時間
#include
#include
#include
#include
using
namespace std;
typedef
struct
node;
int maxn;
queue q;
vector<
int> g[
100010];
bool vis[
100010];
void
bfs()}
}}}int
main()
t.v=c;
t.step=1;
vis[t.v]=1
; q.
push
(t);
bfs();
cout<
return0;
}/*樣例輸入:
4 3 1
2 1 2
2 31 4
樣例輸出:
5 */
藍橋杯練習 演算法訓練
演算法訓練 審美課 時間限制 1.0s 記憶體限制 256.0mb 問題描述 審美的歷程 課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的 老師只想知道,有多少對同學給出...
藍橋杯 基礎練習 大數演算法
之前做過很多大數的題目了吧,現在,那麼我們來統計下簡單的大數問題。大數加法,大數減法,大數乘除,大數篩選,大數階層,好了,現在就針對這幾種問題貼上簡單 吧 大數加減和乘除就列出加法和乘法,其它的型別差不多 我們都知道,大數,要用陣列來存放,都是簡單的進製問題,這些就不多說,貼 大數加法 includ...
演算法筆記 8 2 廣度優先搜尋BFS
三 相關例題 這次我們改變尋路策略,不知要找出路線,而且想知道從起點到終點的最短步數是多少 兩個相鄰節點間看作相隔一步 我們可以按如下的圖示進行寬度優先搜尋 起點a是第一層,發現從a出發能訪問到b和c,於是b c是第二層 按順序訪問第二層,先看b。從b出發能訪問到d和e,於是d e是第三層,等第二層...