演算法入門經典第三章(上)

2021-08-18 19:20:52 字數 1908 閱讀 8006

逆序輸出

讀入一些整數然後逆序輸出,將你所輸入的每個數字存入到陣列a[maxn]中,然後利用for迴圈逆序輸出,輸入完了以後別忘了先按回車再按crtl+z,強制輸出,要不然會無限輸入的2333.這段程式執行是這樣的:(給你個例子( ̄▽ ̄)")如果輸入12 33 55 89 ,則輸出 89 55 33 12.【主要是a[n++]=x這個地方很高效】

#include#define maxn 105

int a[maxn];

int main()

開燈問題

有n個燈,編號為1-n,第1個人把所有燈開啟,第2個把2的倍數的燈號開啟以此類推。一共k人,最後有哪些燈亮著。

一開始用memset把陣列a清零,模擬一開始所有燈都是關了的狀態,然後我們發現改變狀態燈都是 燈的數量n能被1到k整除的燈,比如題目例子中7 3,第一次改變的是1-7,第二次,2,4,6,第三次3,6;劉汝佳老師用的是a[j]=!a[j]來進行對燈狀態的改變,a[j]=!a[j]這個語句就是非零即真,如果a[j]為1那麼進行完語句之後就是0,反之為0,最後是1.簡言之就是0變成1,1變成0.

拿書上例子7 3來說,①i=1,j=1,j%i==0,a[j]=1(因為memset清零了)j一直到7,都能被整除,代表所有燈都亮。②i=2,j=1不整除不執行語句,所以a[j]還是1,j=2,整除a[j]=0;以此類推,最後a[2],a[4],a[6]=0,其餘為1;③i=3情況也是一樣的,a[3],a[6]整除,它們再變,a[3]=0,a[6]=1。然後就是控制空格的問題了,a[i]肯定!=0,所以第一次執行這裡的時候first=0,此後first一直=0,就是只有第乙個輸出i,剩下的因為first=0,輸出空格+i,最後再來個\n。完美~

#include#include#define maxn 1005

int a[maxn];

int main()

printf("\n");

return 0;

}

蛇形填數

二維陣列的應用。一開始我們先把n*n的矩陣全部填充0:memset(a,0,sizeof(a)),然後將最右上角的那個0賦值1,tot也賦值成1:tot=a[x=0][y=n-1]=1;tot進行填數,蛇形填數的最後乙個數字一定是n*n,所以while(tot#include#define maxn 20

int a[maxn][maxn];

int main()

,只要abc,de,x,y,z的元素在這個集合裡就算乙個合法的豎式。【一開始我沒弄明白= =】,比如書上例子abc=775,元素是7,5在集合a中,de=33,元素是3,在集合a中,x=2325,元素是2,3,5在集合a中,y同,z=25575,元素是2,5,7在集合a中。然後abc是個三位數所以從100-999裡去找,de是個兩位數從10-99裡去找。(為什麼書上寫的是111-999和11到99,這......有問題吧)sprintf(buf,"%d%d%d%d",abc,de,x,y,z)就是將abc,de,x,y,z,變成字串存入到buf中,比如例子中abc=775,de=33,x=2325,y=2325,z=25575,執行語句之後就是buf[i]=,然後strchr(s,buf[i])就是找buf[i]在字串s中(首次)的位置,如果找不到就返回null.

#include#includeint main()

}printf("the number of solutions = %d\n",count);

return 0;

}

tex中的引號

gets竟然被廢除了啊w(゚д゚)w,這麼可憐的嗎,我還挺常用它來著......

#includeint main()

else

printf("%c",c);

}return 0;

}

演算法競賽入門經典 第三章

最長回文子串 當字串的長度比較小的時候 attention 最好把陣列開在外面,如果開在main外面並且陣列太大,就會異常退出的。最長回文子串 include include include define maxn 5000 10 char buf maxn s maxn int main prin...

《演算法競賽入門經典》第三章習題3 4

題目名稱 計算器 題目描述 編寫程式,讀入一行恰好包含乙個加號 減號或乘號的表示式,輸出它的值。這個運算子保證是二元運算子,且兩個運算子均不超過100的非負整數。運算子和運算子可以緊挨著,也可以用乙個或多個空格 tab隔開。行首末尾均可以有空格。樣例輸入 1 1 樣例輸出 2 樣例輸入 2 5 樣例...

演算法競賽入門經典第三章 學習總結

1.scanf s a 不加 讀入乙個字串,不能讀入空格,tab,回車。gets s 可以識別空格,tab,回車。以上的函式均在末尾加 0 include include includeusing namespace std int main 2.char strchr const char s,c...