藍橋杯比賽前夜 知識總結

2021-09-13 14:15:34 字數 4329 閱讀 7405

基於藍橋杯近年來相關知識點和部分演算法知識點製作此總結,僅用於藍橋杯比賽前夜突擊。

從n個數中選任意個數,僅用加法湊出x,求解決方案有多少種。

例:6個數中湊出和為6

123456

二進位制列舉子集可以解決該問題:

#include

#include

intmain()

for(i=

0;i<(1

<;i++

)//迴圈所有情況(每種數字對應0和1的2^n次情況)}if

(sum==x)

//判斷當前方案是否可行

}printf

("%d"

,z);

return0;

}

int

is_leap_year

(int year)

return0;

}

#include

#include

using namespace std;

intwhatday

(int y,

int m,

int d)

if(m==2)

return

(d+m*2+

3*(m+1)/

5+y+y/

4-y/

100+y/

400)%7

;}string weekday[7]

=;intmain()

c++ stl (standard template library標準模板庫) 是通用類模板和演算法的集合,它提供給程式設計師一些標準的資料結構的實現如 queues(佇列), lists(鍊錶), 和 stacks(棧)等.

c++ stl 提供給程式設計師以下三類資料結構的實現:

stack<

int> mystack;

接下來, 他只要簡單的呼叫 push() 和 pop() 函式來操作棧. 借助 c++ 模板的威力, 他可以指定任何的資料型別,不僅僅是int型別. stl stack實現了棧的功能,而不管容納的是什麼資料型別。

以上型別常用為vector,queue,stack,map,set,均在文件中提供使用方式。

集合、對映表、等迭代器輸出:

#include

#include

#include

using namespace std;

intmain()

country.

insert

("china");

// country.

insert

("america");

// country.

insert

("france");

// for

(set

::iterator it = country.

begin()

; it != country.

end();

++it)

return0;

}

#include

#include

#include

#include

using namespace std;

map<

int,

int> timed;

struct tasker };

priority_queue tas;

intmain()

for(

int m =

0; m < k; m++

)return0;

}

//初始化

void

init()

}//查詢節點所在根節點

intget

(int x)

return

get(father[x]);

// 返回父結點的根結點

}//兩個元素所在集合合併

void

merge

(int x,

int y)

}//以上為常用操作

//路徑壓縮

intget

(int x)

return father[x]

=get

(father[x]);

// 返回父結點的根結點,並另當前結點父結點直接為根結點

}//關心父節點,不關心真正的結構

使用範例:

//有若干對朋友關係,詢問其中兩人是不是朋友

#include

int father[

5005

],ans[

5005];

int n,m,p;

void

init()

}int

get(

int x)

return father[x]

=get

(father[x]);

// 返回父結點的根結點,並另當前結點父結點直接為根結點

}void

merge

(int x,

int y)

}int

main()

for(

int i =

1;i <= p;i ++)}

for(

int i =

1;i <= p;i ++

)else

}return0;

}

//初始化,size為元素個數,dist為元素距離

void

init()

}//查詢

intget

(int x)

int y = father[x]

; father[x]

=get

(y);

dist[x]

+= dist[y]

;// x 到根結點的距離等於 x 到之前父親結點距離加上之前父親結點到根結點的距離

return father[x];}

//合併

void

merge

(int a,

int b)

}

//走迷宮

#include

#include

using namespace std;

int n,m;

char a[11]

[11];

int vis[11]

[11];

int sum=0;

void

dfs(

int x,

int y)

vis[x]

[y]=1;

//訪問記錄

for(i=-1

;i<=1;

++i)

//四個方向的遍歷

for(j=-1

;j<=1;

++j)}}

vis[x]

[y]=0;

//訪問結束歸位

}//重點是上面這個dfs函式

intmain()

}for

(int i=

0;i} cout

}

剪枝即在各種不同情況或者不滿足的情況下進行的直接return操作。

#include

#include

#include

#include

using namespace std;

const

int maxn =

110;

int vis[maxn]

[maxn]

;int ret[maxn]

[maxn]

;char a[maxn]

[maxn]

;int xx[4]

=;int yy[4]

=;int n, m;

intbfs

(int x,

int y)

q.push

(make_pair

(txx, tyy));

}}}return-1

;}intmain()

}}printf

("%d\n"

,bfs

(bx, by));

}

需要重點看,稍微比深度優先遍歷複雜。

藍橋杯比賽總結

藍橋杯總結 週六參加了 藍橋杯 的比賽,比賽感覺不是太好。比賽的開始,我把計算答案的題目當成了程式設計題,結果在上面浪費了很長的時間。做完三道題後,才意識到前面的題僅僅是寫出答案即可。之後就有些緊張了,由於前面花的時間太久,做後面的題時總感覺時間不夠。做到填空題時,有一道填空題不會,最後算是想出來了...

藍橋杯比賽總結

藍橋杯比賽總結 這次比賽剛開始心情比較緊張,只做了三道題,1,5,7.第一道題購物單,我先設計了乙個2次的迴圈,並且筆算了一下結果,確定筆算結果與程式計算的結果一致了之後才按照題目要求設計了乙個50次的迴圈。並且因為資料太多,驗證了兩次,確定結果一樣,才提交結果,花了很多時間。第五題取數字,因為剛開...

藍橋杯比賽總結 為自己打氣

從北京回來已經幾天了,狀態一直沒有調整好。一場比賽,暴露了我很多缺點。前往北京時,並沒有給自己太大壓力。盡力就好。自恃基礎不好,只打算把能得到的分數拿到。結果又一次 不盡人意,也不能怨天尤人,從比賽結束開始,想了很久。我想做什麼?我 做的不好?1 基礎差 藍橋杯的第3題是中文處理。第5題是赤裸裸的d...