owned this note changed a year ago
Published Linked with GitHub

複習


HC01

https://ncuma-oj.math.ncu.edu.tw/problem/HC01


// input our data int dp[n+5] = {0}; dp[1] = 1, dp[2] = 1; for (int i = 2 ; i < n ; i++) dp[i+1] = (s[i] == s[i-2]) ? dp[i+1-2] + 1 : 1; for (int i = 0 ; i < q ; i++) { int l, r, l1, r1, l2, r2; cin >> l >> r; l1 = l + ((l & 1) == 0); l2 = l + (l & 1); r1 = r - ((r & 1) == 0); r2 = r - (r & 1); if (dp[r1] - dp[l1] + 1 == ((r1 - l1)>>1) + 1 && dp[r2] - dp[l2] + 1 == ((r2 - l2)>>1) + 1) { cout << "YES" << endl; } else { cout << "NO" << endl; } }

函式呼叫函式

void IPass(){ cout<<"PASS"; } void IFail(){ cout<<"FAIL"; } void sayResult(int score){ if (score >= 60) IPass(); else IFail(); } int main(){ int score; cin >> score; sayResult(score); }

自己呼叫自己

void say_hello(){ cout << "Hello~" << '\n'; say_hello(); }

注意

必須有結束條件,或是在某些條件下才呼叫自己,這樣才有醒來的機會。


遞迴


費波那契數列

費波那契定義如下
第0項 = 0
第1項 = 1
第k項 = 第 k-1 項 + 第 k-2 項


int f(int n){ if (n == 0) return 0; else if (n == 1) return 1; else return f(n-1) + f(n-2); }

練習題

C003
C004

Select a repo