2017/09/06:演算法練習小記

來源:互聯網
上載者:User

標籤:文章   思路   逆序   原理   很多   oid   ==   cout   加油   

今天做了7622求排列逆序,半個小時,得到了一個時間逾時的結果,但是我不太知道怎麼改進了。

代碼如下:

#include <iostream>#include <algorithm>using namespace std;int num[100002];int status[100002];long long result = 0;int n;int cal2(int number){ int x=0; for(int i=number;i<n;i++){ if(status[i]==1) x++; } return x;}void cal(int number){ int i=0; for(;i<n;i++){ if(status[i]==0){ if(number == num[i]){ status[i]=1; } if(number > num[i]){ break; } } } result+=(n-i-cal2(i));}bool cmp(int a,int b){ return a>b;}int main(){ int x[100002]; cin>>n; for(int i=0;i<n;i++){ cin>>num[i]; x[i]=num[i]; status[i]=0; } sort(num,num+n,cmp); for(int i=0;i<n;i++){ cal(x[i]); } cout<<result<<endl; return 0;}

思路是把數組排序好,然後每個對應了標記,用過的就把標記設為1,這樣再計算。

後來發現,確實要迴圈很多次,有點耗時間。

然後看看提幹,發現有提示說用歸併排序,然後我就去查歸併排序了。

後來發現是利用遞迴,然後把左邊排好,右邊排號,再合并起來。

但是我還是不太熟悉,大概是弄懂原理了,還是錯了0-0。

覺得自己周末得花半天來專門練習演算法,然後解決這些遺留問題,

然後每天的演算法題如果沒做出來,就至少也得寫一篇這樣的小結文章,反思,嗯啊加油。

2017/09/06:演算法練習小記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.