我是用的是C語言,想在黑龍江省ACM大賽中拿三等獎,應該掌握那些演算法

時間 2021-05-02 20:14:00

1樓:009螃蟹

當中有幾百種計算機常用的演算法的框架和模板,如果你還在為演算法問題而困擾時,這資料會讓你廓然開朗,我也在學,很有用所以極力推薦給你.

框架部分目錄如下:

圖論路徑問題

0/1邊權最短路徑

bfs非負邊權最短路徑(dijkstra)可以用dijkstra解決問題的特徵

負邊權最短路徑

bellman-ford

bellman-ford的yen-氏優化

差分約束系統

floyd

廣義路徑問題

傳遞閉包

極小極大距離 / 極大極小距離

euler path / tour

圈套圈演算法

混合圖的 euler path / tourhamilton path / tour

特殊圖的hamilton path / tour 構造生成樹問題

最小生成樹

第k小生成樹

最優比率生成樹

0/1分數規劃

度限制生成樹

連通性問題

強大的dfs演算法

無向圖連通性

割點割邊

二連通分支

有向圖連通性

強連通分支

2-sat

最小點基

有向無環圖

拓撲排序

有向無環圖與動態規劃的關係

二分圖匹配問題

一般圖問題與二分圖問題的轉換思路

最大匹配(ok)

有向圖的最小路徑覆蓋

0 / 1矩陣的最小覆蓋

完備匹配(ok)

最優匹配(ok)

穩定婚姻

網路流問題

網路流模型的簡單特徵和與線性規劃的關係

最大流最小割定理

最大流問題(ok)

有上下界的最大流問題

迴圈流最小費用最大流 / 最大費用最大流

弦圖的性質和判定

組合數學

解決組合數學問題時常用的思想

逼近遞推 / 動態規劃

概率問題

polya定理

計算幾何 / 解析幾何

計算幾何的核心:叉積 / 面積

解析幾何的主力:複數

基本形點

直線,線段

多邊形凸多邊形 / 凸包

凸包演算法的引進,卷包裹法

graham掃瞄法

水平序的引進,共線凸包的補丁

完美凸包演算法

相關判定

兩直線相交

兩線段相交

點在任意多邊形內的判定

點在凸多邊形內的判定

經典問題

最小外接圓

近似o(n)的最小外接圓演算法

點集直徑

旋轉卡殼,對踵點

多邊形的三角剖分

數學 / 數論

高精度計算

高數度加減法、乘除法

最大公約數

euclid演算法

擴充套件的euclid演算法

同餘方程 / 二元一次不定方程

同餘方程組

線性方程組

高斯消元法

解mod 2域上的線性方程組

整係數方程組的精確解法

矩陣行列式的計算

利用矩陣乘法快速計算遞推關係

分數分數樹

連分數逼近

數論計算

求n的約數個數

求phi(n)

求約數和

快速數論變換

……素數問題

概率判素演算法

概率因子分解

資料結構

組織結構

二叉堆左偏樹

二項樹勝者樹

跳躍表樣式圖示

斜堆reap

統計結構

樹狀陣列

虛二叉樹

線段樹矩形面積並

圓形面積並

關係結構

hash表

並查集路徑壓縮思想的應用

stl中的資料結構

vector

deque

set / map

動態規劃 / 記憶化搜尋

動態規劃和記憶化搜尋在思考方式上的區別

最長子序列系列問題

最長不下降子串行

最長公共子串行

一類np問題的動態規劃解法

樹型動態規劃

揹包問題

動態規劃的優化

四邊形不等式

函式的凸凹性

狀態設計

規劃方向

線性規劃

常用思想

二分最小表示法

串kmp

trie結構

字尾樹/字尾陣列

lca/rmq

有限狀態自動機理論

排序選擇/冒泡

快速排序

堆排序歸併排序(ok)

基數排序

拓撲排序

排序網路

2樓:

先熟悉c語言的語法 和常見的錯誤 然後看劉汝佳的演算法書 很不錯 看懂 看透

我讀得懂c語言程式,但是我自己寫不出來,怎麼辦

3樓:匿名使用者

1、從最簡單的開始,要多寫,經常寫。程式剛開始學習的時候要多看,要理解程式所要表達的思想,但是不能一直看,更多的情況下,只有通過自己不斷的聯絡才可以發現自己容易犯的錯誤,從而加以改進,其實有很多哪怕是最簡單的語法規則如果是自己來編的話都有可能犯錯。

2、所以一句話,看程式要一句句地分析,但不要以為自己看懂了就會了,還要拿來在編譯器裡除錯執行,不斷的練習才能熟練以致精通。

4樓:

誰不練就能寫得來呢?多寫呀,錯了大不了改,實在不行重寫。寫多了就會了。

另外,流程圖一定要會的,起碼腦中應該有解決問題的方法。**編寫中的技巧是在編寫中練出來的,努力吧,沒誰不行。

建議寫一些經典問題,不一定太難,但要有代表性。

此外,同一問題不同的實現方法也要會,不能只侷限於一種方案。

還要建議你多看看演算法書,站在巨人的肩膀上總比自己探索來得快,讀得懂就多讀吧,讀過之後記住一些就更好了。

5樓:匿名使用者

著敲**(看不懂沒關係,要多練),

看書—>敲**—>再看書—>再敲**

2、《c語言入門經典》《資料結構》《演算法導輪》《演算法概論》

3、我大學才知道什麼叫c語言,我現在已經能在acm/icpc大賽(大學生程式設計競賽)上拿獎了,只要有心學,肯定能學好。

4、剛開始不要看這個,等你入門後再看,而且你要成為高手的話,那就是必看

學c最大的竅門就是 多練 ,不要只是看看,只有多敲鍵盤了,才能掌握的牢固

我感覺 學c語言 就要 : 多看書 、 多敲**。

沒事可以去網上的judge 上面去做做題(練習演算法的),很多大學都有:

北大:吉大:

等等 很多啦

如果你只是想學c語言基礎 不想研究演算法 那就不用了 《演算法導輪》和《演算法概論》也可以不用看了 就看看一般的c語言書籍 一般都能入門

另外,虛機團上產品**,超級便宜

6樓:匿名使用者

你讀程讀的多了自然可以寫出來的,不過千萬不要眼高手低,看見覺得簡單就不自己動手,自己程式設計的話可以發現很多自己平常忽略的小細節,而且自己程式設計實現的話可以當場看到程式的結果,而不是拿著書本翻來翻去推算結果,更加保證了知識的可靠性。

7樓:

只能多練練了,從簡單的開始,自己嘗試著寫,慢慢積累就會了。

8樓:

自己多動手寫,寫的過程中會出項很多意想不到的問題,經常修改才能算真正的熟悉。就好比文學作品,很多人都能讀懂,但是要真正自己寫出來是需要很多積累的

9樓:小斌江

從簡單的,慢慢來。。。先不要看書。。。

10樓:匿名使用者

一定要動手寫,熟悉也要寫幾次,自然沒問題。

c在c語言程式設計裡是做什麼用的, c 在C語言程式設計裡是做什麼用的??

山大威海校區 通過你的描述我大概知道你要表述的意思了,fscanf是進行檔案讀取操作,而檔案中資料的存放格式是用中間 來描述規範的,當然,第一項大家都知道,是開啟檔案的指標 file,這裡是output fopen 至於第三項,是要儲存的位置,你的情況是 c字元,而 c就是檔案中的間隔符。 百小度 ...

我用KEEL軟體程式設計,用的是C語言,然後用proteus軟體

編好程式生成hex,proteus畫好電路圖後雙擊mcu就可以新增hex執行了 有兩種方法 1,用keil生成.hex檔案,在isis中右擊at89c51,再左擊,出現相應元件的屬性對話方塊 program file 一項中選擇要加入的.hex檔案。2,聯調.聯調設定步驟如下 1 把安裝目錄prot...

c語言中小數部分是怎麼相加的,怎麼用c語言求乙個陣列中所有數的整數部分和及小數部分和?

1.c語言的小數都是浮點數。浮點數屬於floating binary point types,也就是說都double型的數值在相加減的時候,會將數值轉換成二進位制的數值如10001.10010110011這種表示發再做相加減,但是在轉換成二進位制 表示的時候,儲存小數部分的位數會有不夠的現象,即無限...