演算法競賽入門經典 1

2021-08-13 19:52:30 字數 1410 閱讀 5876

想著要學演算法已經很長時間了,但一直都是有問題自己想,很少受「正規軍」編排,網上關於演算法的書倒是不少,其一必推《演算法導論》,還有一本《演算法競賽入門經典》,作者劉汝佳,好了,步入正題,兩天時間從第一章到第三章結尾,算是對c又進行了一遍複習,說一下新得

%3d

%-3d

%03d

知道它們的區別嗎,在呼叫printf時候,第乙個表示輸出格式三位,不足三位左補空格,當然如果超過三位則正常輸出應該的位數,第二個和第乙個區別則是右補,其他都一樣,第三個和第乙個也一樣只是這一次補的是代替空格補0了

printf需要輸出特殊字元\n,%d怎麼辦,看下面

printf("\\n");

printf("%%d");

下面介紹一些函式

計算程式執行時間的

clock()/clocks_per_sec
這個在time.h 裡面,其中clocks_per_sec與機器有關,必須要除,不然得到的值沒有實際意義

輸入輸出重定向

在使用時候,txt檔案和c檔案放在一起

freopen("1.txt","r",stdin);

freopen("1.txt","w",stdout);

這兩個主要是輸入輸出大量資料,鍵入不方便時候使用在stdio.h裡面

兩個陣列之間是不能直接賦值,有函式memcpy();memset();用法如下:

char a[4]=,b[4]=;

memset(a,19,2);

printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]);

這樣輸出陣列a的值為19,19,2,3;看出來了吧,memset是給陣列重新賦值的,三個引數分別是物件,數值,個數和memset類似,memcpy則是複製乙個陣列裡面k個元素給另乙個,看下面的例子

char a[4]=,b[4]=;

memcpy(a,b,2);

printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]);

這樣陣列a值為4,5,2,3:當然要是陣列很大又想全部賦值就直接傳入第三個引數sizeof(b)就ok了,還有乙個適應於字串賦值的函式strcpy(a,b),意思將b中字串給a,這三個在string.h裡面

最後提一下c中「」和『』的區別,簡單來說大小,「」用在字串,『』用在字元.比如下面這一段

if(c=='a'){printf("%c",'h');

if(c=='a'){printf("%s","h");

以上是我覺得新人可能會需要的,其實演算法就是解決問題的辦法,更關鍵的是能夠熟練掌握c,自然可以得心應手處理複雜問題

演算法競賽入門經典 C 入門

include 提供輸入輸出流 include 提供常用演算法 using namespace std const int maxn 100 10 int a maxn int main return0 宣告陣列時,陣列大小可以用const宣告的常數。在c 中,這樣的寫法更加推薦。include i...

演算法競賽入門經典 WERTYU

題目描述 把手放在鍵盤上時,稍不注意就會往右錯一 位。這樣,輸入q會變成輸入w,輸入j會變成輸 入k等。鍵盤如圖3 2所示。輸入乙個錯位後敲出的字串 所有字母均 大寫 輸出打字員本來想打出的句子。輸入保 證合法,即一定是錯位之後的字串。例如輸入中不會出現大寫字母a。樣例輸入 o s,gomr ypf...

演算法競賽入門經典例題

7744問題 問題 輸出所有形如aabb的四位完全平方數 即前兩位數字相等,後兩位數字也相等 include include int main 開燈問題 include include define maxn 1010 int a maxn int main int n,k,first 1 mems...