![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 嘎哈哈 ![]()
![]() |
1樓 |
提示
(X+5)%17
本篇文章回覆於2017-05-23 21:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
迴圈內使用if(房號==16){continue;}的方式跳過
以及使用一個陣列用來存放已經停過的房號 如果陣列內存在那個房號就跳過(也可以直接把16號放進去裡面)
本篇文章回覆於2017-05-24 11:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
以下給您參考,若是作業,請一定要弄懂
本篇文章回覆於2017-05-24 16:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
嘎哈哈 ![]() |
感謝樓上各位大大的指點
3樓大的程式瑪我稍微看了一下 我不懂的地方是 11 if (x == 0) x += 5; 這邊判斷他x==0是為了讓她回到0 5 10 這樣嗎 12 if (!list.Contains(x)) 這邊會傳一個True或false的值 那裡面放x我不太懂詳細結果 可以在麻煩大大解釋嗎 不好意思
本篇文章回覆於2017-05-24 22:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
我個人覺得 #1樓 的方式是最快,且是最佳解...,並且不需要任何多餘的判斷式
(建議作者多思考一下為何#1樓會這樣子提示) 我是很想提供程式碼 1樓 提示的程式碼 但是我更希望你多思考 這題真的沒什麼太大的困難 如果不用1樓的方式 倒也不太需要用到陣列
本篇文章回覆於2017-05-24 23:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
最有價值解答
Always ![]() |
彩虹您好,
其實用 x = (x + 5) % 17;應該還是要判斷,因為當x+5=17時,(x + 5) % 17會等於0 嘎哈哈您好, 抱歉!有些東西沒刪掉,
本篇文章回覆於2017-05-25 08:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓 |
謝謝 #Always 的提醒
的確會有餘數=0的問題 要加上if((x+5)%17==0),則x=(x+5*2)%17
本篇文章回覆於2017-05-25 10:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓 |
如果16不打算停電就將有 //的兩行加入if(a!=16)
本篇文章回覆於2017-05-25 17:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓 |
這個題目可看成是一個環狀佇列(circular queue),
由於5和17之間沒有大於1的公因數,所以不會有重複。 借用Always大大的程式碼改編,求得從每一間開始的停電序列,如下:
本篇文章回覆於2017-05-26 10:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
10樓 |
#Eucalyptus 你直接這樣寫會有問題
如我在#7樓的回覆 不然會出現 【第0間停電】 你需要把 (x + 5) % 17 等於 0 的問題排除 謝謝
本篇文章回覆於2017-05-26 12:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
11樓 |
我也疏忽了..多謝彩虹大的提醒。
x = (x + 5) % 17; x = (x == 0 ? 17 : x); //加入餘數=0的判斷
本篇文章回覆於2017-05-26 13:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
12樓 |
提供一下我的想法,
不用 array, 精神一樣是靠餘數運作, 也不用判斷0, 印完 17 次就收工.
本篇文章回覆於2017-07-21 16:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
13樓 |
精簡一下大概是這樣
本篇文章回覆於2017-07-21 16:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |