#15126: C++ AC (目前c++最短的程式)(幹嘛那麼麻煩?)


wish.rirf@gmail.com (C++ 與我)

學校 : 臺北市私立薇閣高級中學
編號 : 82132
來源 : [36.224.41.96]
最後登入時間 :
2021-08-07 19:29:31
d587. 參貳壹真好吃 -- jack1 | From: [223.136.185.164] | 發表日期 : 2018-09-15 14:36

#include<iostream>
#include<algorithm>
unsigned int n;
using namespace std;
int main(){
cin>>n;
int nums[n];
for(unsigned int lcv = 0;lcv<n;lcv++)
 cin>>nums[lcv];
sort(nums,nums+n);
for(unsigned int lcv = 0;lcv<n;lcv++)
 cout<<nums[lcv]<<' ';
return 0;
}

用<algorithm>裡面的sort(),一秒就好了,幹嘛那麼麻煩?

 
#15423: Re:C++ AC (目前c++最短的程式)(幹嘛那麼麻煩?)


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
d587. 參貳壹真好吃 -- jack1 | From: [140.122.184.248] | 發表日期 : 2018-10-05 15:41

對於你的疑問, 本人以自身的觀點來回覆你:

1. 使用STL的sort()固然快速又方便, 但在本題的情況(只有3種數值), 顯然使用 Counting Sort O(N) 在效率上比使用 STL的sort() O(NlgN) 還來的更好, 只是本題測資規模不大所以無法體現出明顯的差異, 雖然你可能認為只要將題目給AC就好何必多此一舉? 但我認為寫題目不應只追求AC而已, 有時候是要追求更好的演算法, 這樣對於未來碰到困難(或很機車(?))的題目時會有所幫助的。

2. 站在程式設計的角度來看, 程式碼短實在沒什麼好炫耀的, 程式碼短通常代表著可讀性差, 若為了簡短程式碼而使用效率較差的演算法就又更本末倒置了, 而且別忘了現在是直接使用STL的sort()才看起來很短, 實際上在<algorithm>中實作sort()可沒那麼簡單(詳細可以參考這裡), 另外在不同的環境甚至不同的語言不見得會有像C++的STL好用的模板庫, 最後如果真的要比短, 顯然隨便寫都能寫出比上面更短的程式碼啊

 
ZeroJudge Forum