發表文章

APCS 實作題 10510 第2題最大和參考解法

此題在高中生程式解題系統的題號為: https://zerojudge.tw/ShowProblem?problemid=c295 。 解法一,排序為主: 用二維整數陣列(也就是矩陣) d[20][20] 來存放資料。 針對矩陣的每一列(也就是每一群數字)作由小到大排序,而第 i 群數字的最大值會在 d[i][m-1] 位置上。 將每一群的最大數字做加總,儲存在整數變數 sum。 判斷每一群的所挑選出來的數字是否整除 sum。 使用 flag 來判斷這 n 群是否有一群以上的數字可整除 sum。 C++ 程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #include <iostream> #include <algorithm> using namespace std; int main ( void ) { int d[ 20 ][ 20 ] = { 0 }; // 用二維整數陣列(也就是矩陣) d[20][20] 來存放資料。 int n, m; while (cin >> n >> m) // 讀取 n, m { // 讀取每一群的數字 for ( int i = 0 ; i < n; i ++ ) for ( int j = 0 ; j < m; j ++ ) cin >> d[i][j]; // 針對矩陣的每一列(也就是每一群數字)作由小到大排序 for ( int i = 0 ; i < n; i ++ ) sort(d[i], d[i] + m); // 將每一群的最大數字做加總,儲存在整數變數 sum。 ...

APCS 實作題 10510 第1題三角形辨別參考解法

此題在高中生程式解題系統的題號為: c294: APCS-2016-1029-1三角形辨別 。 筆者的解法: 1. 以整數陣列 n[3] 讀取三個整數。 2. 再用排序(sort)將整數陣列由小到大做排序,分別指定 a = n[0],b = n[1],c = n[2],此時 c 為最大值。 3. 之後用 if / else if / else 來做底下的判斷: 若 a+b ≦ c 時,輸出「No」; 若 a×a+b×b < c×c 時,輸出「Obtuse」; 若 a×a+b×b = c×c 時,時輸出「Right」; 若 a×a+b×b > c×c 時,輸出「Acute」。 C++ 程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #include <iostream> #include <algorithm> using namespace std; int main ( void ) { int n[ 3 ]; // 以整數陣列 n[3] 讀取三個整數。 while (cin >> n[ 0 ] >> n[ 1 ] >> n[ 2 ]) { // 用排序(sort)將整數陣列由小到大做排序 sort(n, n + 3 ); // 分別指定 a = n[0],b = n[1],c = n[2],此時 c 為最大值 int a = n[ 0 ], b = n[ 1 ], c = n[ 2 ]; int l = a * a + b * b, r = c * c; // 由大到小輸出 cout << a << " " << b << " ...

學英文app推薦

此篇文章為筆者在Android手機上使用英文相關的Apps之紀錄,但此篇文章不寫任何評論,且不定時更新。 單字: Lingvist https://play.google.com/store/apps/details?id=io.lingvist.android Sayings Master https://play.google.com/store/apps/details?id=com.masterkeygames.sayingsmaster 文法: Speedy Grammar https://play.google.com/store/apps/details?id=com.wobblemonkey.speedygram Sentence Master https://play.google.com/store/apps/details?id=com.mojoegames.sentencemaster 聽力: VoiceTube https://play.google.com/store/apps/details?id=org.redidea.voicetube Listening Master https://play.google.com/store/apps/details?id=com.masterkeygames.listeningmaster 閱讀: English Reading Comprehension https://play.google.com/store/apps/details?id=com.education.english_reading 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

APCS 實作題 10603 第1題秘密差參考解法

圖片
此題在高中生程式解題系統的題號為: c290: APCS 2017-0304-1秘密差 。 筆者將解法依照子題組的給分方式分別解題: 第 1子題組 20 分: X 一定恰好四位數 。 只要用除法與餘數運算子,分別求出個位數字和百位數字的和以及十位數字與千位數字的和即可。 C 程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> int main ( void ) { int n; while (scanf( "%d" , & n)) { int a = n %10 + n / 100 % 10 ; // 個位數字與百位數字的和 int b = n / 1000 + n / 10 % 10 ; // 十位數字與千位數字的和 printf( "%d \n " , (a > b ? (a - b) : (b - a))); } return 0 ; } 第 2子題組 30分: X的位數不超過 9。 用除法與餘數運算子,分別求出奇數位數字的和以及偶數位數字的和即可。 Python 程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 while True : try : n = int ( input ()) a = 0 b = 0 while (n > 0 ): a = a + n % 10 # 奇數位數的和 b = b + n // 10 % 10 # 偶數位數的和 n = n // 100 print ( abs (a - b)) except EOFError : break 第 3子題組 50 分: X的位...

LeetCode OJ: 326. Power of Three 三次方判斷

圖片
題目連結  https://leetcode.com/problems/power-of-three/ 。題目需要判斷一個整數是不是 3 的某次方,例如: 1 是 3 的 0 次方; 3 是 3 的 1 次方; 9 是 3 的 2 次方; 27 是 3 的 3 次方; 0 不是 3 的 某次方; 12 不是 3 的 某次方; 24 不是 3 的 某次方; 此題 LeetCode 提供了四種解法:Loop Iteration、Base Conversion、Mathematics、Integer Limitations。 方法一: Loop Iteration 一個整數是 3 的某次方時(3^x),可以寫成如下表示方式: n = 3 ^ x n = 3 * 3 * 3 * 3 ... * 3 也就是將 n 除以 3 做 x 次後,會得到整數 1 。於是可以用迴圈一直除以 3,直到餘數不是零。最後在判斷有沒有得到整數 1。 C++ 程式碼: 1 2 3 4 5 6 7 8 9 10 class Solution { public: bool isPowerOfThree( int n) { if (n < 1 ) return false ; while (n % 3 == 0 ) n /= 3 ; return n == 1 ; } }; 方法二: Base Conversion 十進制時,10 ^ 0 = 1;10 ^ 1 = 10;10 ^ 2 = 100 ... etc。只要是 10 ^ x 次方時,一定會是以 1 開頭,接著連續 0 的形式出現: 1 ... 0  。 那二進制時呢? 2 ^ 0 = 1; 2 ^ 1 = 10;2 ^ 2 = 100 ... etc。也是  1 ... 0  形式。所以可以將數字 n 轉換成 三進制 的字串,在 檢查數字 1 是否只有出現一次 。 C++ 程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

遊戲程式設計入門

前言 本文將介紹遊戲程式設計的工具及能力,標題已說明內文將著重在遊戲設計中的程式設計,所以對程式設計沒有興趣的人,請不要浪費自己寶貴的時間來閱讀本文。若對電腦遊戲設計有興趣但對程式設計不怎麼了解的人,請讀敝人另一篇文章:【 電腦遊戲設計入門 】。 程式語言的選擇 既然是程式設計,首先要選擇的就是程式語言了,那要怎麼考慮呢?程式語言所用的軟體工具:想用拖曳的方式設計使用介面(User Interface),還是慢慢寫程式寫出來?工具是否免費?說明文件是否完善?除錯容易嗎?遊戲的執行環境:Windows?Linux?iPhone?Android? 哇!哇!哇!真的要考慮這麼多的問題嗎???其實先不用喔。 開始入門時,其實也不用考慮這麼多,先把想做的遊戲給訂出來,再來選擇要用的工具即可;若對做什麼遊戲還沒有想法時,建議可以看看 Making Games with Python & Pygame 這一本免費的電子書,會建議這一本是因為 Python 是目前很紅的程式語言,很多人都說學起來很容易。在學習的過程中,也可以玩玩 Hour of Code 來建立自己的程式邏輯,用Hour of Code做一些小遊戲,例如: 一小時玩 Flappy 、 編寫一個你自己的運動遊戲程式 等。此外個人覺得使用視覺化的程式設計工具(如 Scratch 、 Construct2 、 Clickteam Fusion 、 RPG Maker )來快速打造遊戲的原型,也是個不錯的選擇。 不過筆者比較建議使用 Scratch ,這是因為 Scratch 的中文網路資源相對較多(若讀者本身可以接受英文資源的話,還是看看英文的囉), Scratch 官方也有教學可以讓我們自己學習;以及 Scratch 官網上也有很多Scratcher所分享的專案,可以看看別人的想法,並從中得到不一樣的想法。此外,也需要常常練習做專案,等到累積一定的經驗後,就會發現Scratch有些地方不怎麼容易實現遊戲的功能,例如連線遊戲;而且積木程式一多,除錯起來很不容易。 學好Scratch後,我會建議學C#當第二個程式語言,這是因為C#是跨平台開發工具Unity所用的程式語言之一,而且 C# 在設計視窗相關的程式(學習資源可參考 視窗程式設計 - 使用 C# )時,會比較方便。 遊戲...

Solutions to Blocky Game Pond Tutor (Blockly 池塘遊戲教程參考解法)

圖片
Level 1: Level 2: Level 3: Level 4: Level 5: Level 6: Level 7: Level 8: Level 9: Level 10: Pond: Possible solution 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.