# 目錄 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [上週題目講解](#1) * [For 迴圈](#5) --- # 上週題目講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [T03 格子遊戲](#2) * [T04 尋找最大與次大](#3) * [T05 等比 or 等差](#4) --- ## [T03 格子遊戲](http://mdcpp.mingdao.edu.tw/contest/29/problem/T03) | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [解題想法](#2/1) * [特殊狀況講解](#2/8) * [參考程式碼解析](#2/16) ---- ### 解題想法 ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ![](https://i.imgur.com/BMU0D5a.png =700x400) <!-- .slide: data-transition="none" --> ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ![](https://i.imgur.com/vMtRjoY.png =700x400) <!-- .slide: data-transition="none" --> ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/PP5Y8XA.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/HEYXwGR.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/dsDANYO.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/KHG2UBV.png =700x400) ---- ### 特殊狀況講解 ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> 狀況一: <span style="color: red">**X**</span> 值位於<span style="color: red">**右界**</span> 狀況二: <span style="color: red">**Y**</span> 值位於<span style="color: red">**上界**</span> ``` ``` ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> 狀況一: <span style="color: red">**X**</span> 值位於<span style="color: red">**右界**</span> 狀況二: <span style="color: red">**Y**</span> 值位於<span style="color: red">**上界**</span> ```cpp= 如果 ➨ ( c == 'R' ) ``` ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> 狀況一: <span style="color: red">**X**</span> 值位於<span style="color: red">**右界**</span> 狀況二: <span style="color: red">**Y**</span> 值位於<span style="color: red">**上界**</span> ```cpp= 如果 ➨ ( c == 'R' ) 如果 ➨ ( x == N ) ``` ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> 狀況一: <span style="color: red">**X**</span> 值位於<span style="color: red">**右界**</span> 狀況二: <span style="color: red">**Y**</span> 值位於<span style="color: red">**上界**</span> ```cpp= 如果 ➨ ( c == 'R' ) 如果 ➨ ( x == N ) 則 ➨ 輸出原位 ``` ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> 狀況一: <span style="color: red">**X**</span> 值位於<span style="color: red">**右界**</span> 狀況二: <span style="color: red">**Y**</span> 值位於<span style="color: red">**上界**</span> ```cpp= 如果 ➨ ( c == 'R' ) 如果 ➨ ( x == N ) 則 ➨ 輸出原位 否則 ➨ 輸出(x+1, y) ``` ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> 狀況三: <span style="color: red">**X**</span> 值位於 <span style="color: red">**1**</span> 狀況四: <span style="color: red">**Y**</span> 值位於 <span style="color: red">**1**</span> ```cpp= ``` ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> 狀況三: <span style="color: red">**X**</span> 值位於 <span style="color: red">**1**</span> 狀況四: <span style="color: red">**Y**</span> 值位於 <span style="color: red">**1**</span> ```cpp= 如果 ➨ ( c == 'D' ) 如果 ➨ ( y == 1 ) 則 ➨ 輸出原位 否則 ➨ 輸出(x, y-1) ``` ---- ### 參考程式碼解析 ---- <!-- .slide: data-transition="none-out" --> ```javascript [1-6,14|7-13] #include <iostream> using namespace std; int main(){ char c; int N, M, x, y; cin >> M >> N >> x >> y >> c; if( c == 'L' ){ if( x == 1 ){ cout << x << " " << y; }else{ cout << x - 1 << " " << y; } } } ``` ---- <!-- .slide: data-transition="none" --> ```javascript [7-13] #include <iostream> using namespace std; int main(){ char c; int N, M, x, y; cin >> M >> N >> x >> y >> c; if( c == 'D' ){ if( y == 1 ){ cout << x << " " << y; }else{ cout << x << " " << y - 1; } } } ``` --- ## [T04 尋找最大與次大](http://mdcpp.mingdao.edu.tw/contest/29/problem/T04) <!-- .slide: data-transition="convex-in" --> | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [解題想法](#3/1) * [參考程式碼解析](#3/6) ---- ### 解題想法 ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/APXXF0h.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/8mWAEp9.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/r8XZnLQ.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/eMVaqIQ.png =700x400) ---- ### 參考程式碼解析 ---- ### 參考程式碼解析 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ```cpp= #include <iostream> using namespace std; int main(){ int a, b, c, d, ma, m; cin >> a >> b >> c >> d; } ``` ---- ### 參考程式碼解析 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ```cpp= #include <iostream> using namespace std; int main(){ int a, b, c, d, ma, m; cin >> a >> b >> c >> d; if( a >= b ){ ma = a; m = b; }else{ ma = b; m = a; } } ``` ---- ### 參考程式碼解析 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ```cpp= #include <iostream> using namespace std; int main(){ int a, b, c, d, ma, m; cin >> a >> b >> c >> d; if( c >= m ){ if( c >= ma ){ ma = c; m = a; }else{ m = c; } } } ``` --- ## [T05 等比 or等差](http://mdcpp.mingdao.edu.tw/contest/29/problem/T05) | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="convex-in convex-out" --> * [解題想法](#4/1) * [特殊狀況講解](#4/6) * [參考程式碼解析](#4/9) ---- ### 解題想法 ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="convex-in" --> <!-- .slide: data-transition="none-out" --> ![](https://i.imgur.com/wAtQN6C.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/Qzjvljo.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/clfLbVa.png =700x400) ---- ### 解題想法 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/4wjBW6K.png =700x400) ---- ### 特殊狀況講解 ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/jXQZ3Mh.png =700x400) ---- ### 特殊狀況講解 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ![](https://i.imgur.com/Kinuxjh.png =700x400) ---- ### 參考程式碼解析 ```cpp= #include<iostream> using namespace std; int a, b, c; signed main(){ cin >> a >> b >> c; if( a + c == b + b ){ if( ( a * c ) == b * b && a * c != 0){ cout << "B"; }else{ cout << "A"; } }else if( ( a * c ) == b * b && a * c != 0){ cout << "C"; }else{ cout << "D"; } } ``` ---- ### 參考程式碼解析 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | <!-- .slide: data-transition="none" --> ```cpp= #include <iostream> using namespace std; int main(){ double a, b, c; cin >> a >> b >> c; } ``` ---- ### 參考程式碼解析 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include <iostream> using namespace std; int main(){ double a, b, c; cin >> a >> b >> c; if( b == 0 ){ if( c == 0 && a == 0 ){ cout << "A"; }else{ cout << "D"; } } } ``` --- # For 迴圈 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [基本介紹](#5/1) * [語法與使用範例](#5/3) * [應用問題](#5/7) * [每日一題](#5/10) ---- ## 基本介紹 ---- ## 基本介紹 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | 比起等等會提到的 while 迴圈 for 迴圈更適合處理<span><!-- .element: class="fragment highlight-red " -->有次序</span>的事 其實 for 迴圈能做的事,while 迴圈都能做 為了<span><!-- .element: class="fragment highlight-red " -->視覺上的方便</span>,因此要學習 for 迴圈 ---- ## 語法與使用範例 ---- ## 語法與使用範例 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= for( A. ; B. ; D. ) { C. } ``` * A. ➨ 一開始先做什麼事<!-- .element: class="fragment" data-fragment-index="0" --> * B. ➨ 條件式<!-- .element: class="fragment" data-fragment-index="2" --> * C. ➨ 當 B. 條件成立時,就重覆一次的指令<!-- .element: class="fragment" data-fragment-index="3" --> * D. ➨ 等 C. 做完一次,就執行的指令<!-- .element: class="fragment" data-fragment-index="4" --> ---- ## 語法與使用範例 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include<iostream> using namespace std; signed main(){ int n, i; cin >> n; for( i = 1 ; i <= n ; i++ ){ cout << i << " "; } } ``` | 輸入 | 5<!-- .element: class="fragment" data-fragment-index="1" --> | | -------- | -------- | | 輸出 | 1 2 3 4 5<!-- .element: class="fragment" data-fragment-index="2" --> | ---- ## 語法與使用範例 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include<iostream> using namespace std; signed main(){ int n, i, j; cin >> n; for( i = 1 ; i <= n ; i++ ){ cout << "I =>" << i << '\n'; for( j = 0 ; j < n ; j++ ){ cout << "J => " << j << " "; } cout << '\n'; } } ``` ---- ## 應用問題 ---- ## 星星問題 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * 題目敘述 ``` 請輸出一個用 * 構成的 N 層三角形 ``` * 範例輸入 ``` 3 ``` * 範例輸出 ``` ***** *** * ``` ---- ## 參考解答 ---- ## 參考解答 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include<iostream> using namespace std; signed main() { int n; cin >> n; for( int i = 1 ; i <= n ; i++ ){ for( int j = 1 ; j < i ; j++ ){ cout << " "; } for( int j = 0 ; j <= 2 * n - i * 2 ; j++ ){ cout << "*"; } cout << '\n'; } } ``` ---- ## 每日一題 ---- ## [今日份的作業](http://mdcpp.mingdao.edu.tw/) :smiley: --- # While 迴圈 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * [基本介紹](#6/2) * [語法與使用範例](#5/3) * [應用問題](#5/7) * [每日一題](#5/10) ---- ## 基本介紹 ---- ## 基本介紹 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | While 迴圈的特色就是他的重複性 他是一種<span><!-- .element: class="fragment highlight-red " -->控制流程</span>的陳述 利用一個<span><!-- .element: class="fragment highlight-red " -->返回結果為布林值</span>的表達式作為循環條件 當這個表達式的返回值為<span><!-- .element: class="fragment highlight-red " -->「真」</span>時 則<span><!-- .element: class="fragment highlight-red " -->反覆執行迴圈內的程式碼</span> 若表達式的返回值為<span><!-- .element: class="fragment highlight-red " -->「假」</span> 則<span><!-- .element: class="fragment highlight-red " -->結束執行迴圈內的代碼</span> 繼續執行迴圈下面的指令 ---- ## 語法與使用範例 ---- ## 語法與使用範例 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= while( A.條件式 ) { B.當條件成立時,就重覆做的事 } ``` ---- ## 應用問題 ---- ## 班級名條 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | * 題目敘述 ``` Ryan 老師一個學年會教很多個班,每班的人數都不一樣 為了製作名條方便,Ryan 決定寫程式輸出 No.N ~ No.1 ``` * 範例輸入 ``` 5 ``` * 範例輸出 ``` No.5 No.4 No.3 No.2 No.1 ``` ---- ## 參考解答 ---- ## 參考解答 | | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | ```cpp= #include<iostream> using namespace std; int main (){ int n; cin >> n; n++; while( n-- ){ if( n == 0 ){ break; } cout << "No. " << n << '\n'; } } ```
{"metaMigratedAt":"2023-06-16T22:03:11.475Z","metaMigratedFrom":"YAML","breaks":true,"slideOptions":"{\"theme\":\"serif\",\"transition\":\"convex\"}","title":"目錄","description":"上週題目講解","contributors":"[{\"id\":\"caabc74e-d866-4d87-a18f-1cf893d1eaaf\",\"add\":32600,\"del\":9157},{\"id\":\"6a375517-4167-4b7c-a983-1e595a29262c\",\"add\":463,\"del\":40},{\"id\":\"1acbf739-4837-4867-be73-4a41bb7c42a7\",\"add\":40,\"del\":40}]"}
    1084 views
   Owned this note