看板 C_and_CPP 關於我們 聯絡資訊
問題很簡單 但就是不會~"~ 譬如說{1,4,5,3,5} 取最大值我會 但目的是要最大且相同的值 所以應該是5,5才對= = #include<stdio.h> int main(){ int arr[5]={1,4,5,3,5}; int max=0; int i; for(i=0;i<5;i++){ if(arr[i]>max) max=arr[i]; } printf("%d, ",max); } 請問用陣列去存我要的輸出結果5,5 要怎樣寫才可以啊Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.107.164.245
dendrobium:多一個count? 03/22 19:46
springman:第一次迴圈找到最大值, 第二次迴圈將與最大值相同的輸出 03/22 19:46
atoi:如果數字都不大,可以再用一個陣列存數字出現數目?? 03/22 20:04
ables:先sorting? 03/22 20:21
atoi:阿 我說的是像counting sort那樣 03/22 20:38
springman:看來 d大的建議比較簡單... 03/22 20:54
dendrobium:疑? 我好像有看錯問題吧XD 03/22 21:42
NGboy:謝謝二樓大大的點醒 終於有了T_T 也謝謝其他大大的幫忙:D 03/22 22:02
atoi:d大的好像行吧?當大於max時,max設定為該值且count=1 03/22 22:11
atoi:而若與max相等,則count++; 是這樣嗎?? 03/22 22:12
tabinoyume:2樓的時間複雜度是n^2,先sort再找的話是nlogn 03/22 22:24
VictorTom:請問為什麼2F的複雜度是n^2? 不是O(2*n) = O(n) 嗎?_? 03/22 23:05
tabinoyume:2個迴圈應該是指內跟外迴圈吧? 03/22 23:18
VictorTom:我想是非巢狀, 兩個前後分開跑的迴圈; 第一個找到最大值 03/22 23:21
VictorTom:第二個計數array裡和最大值相同的就夠了.... 03/22 23:22
VictorTom:當然也可以在找最大值的同時就計數, 這樣就不用第二個迴 03/22 23:22
VictorTom:圈, 基本上應該也同樣是O(N)的.... 03/22 23:23
tabinoyume:假設最大的數有1個,次大的有2個,分開的迴圈怎麼找? 03/22 23:26
ables:似乎誤會題目了...以為是必須有重複的最大值... 03/22 23:28
springman:最大的數有一個時,就只要輸出一個最大值即可 03/23 08:26