1. 程式人生 > >②2017=5.13-7.1

②2017=5.13-7.1

解析 display pla 部分 using lap code 需要 print

                         1/50


這裏都沒有發題目,隨手解析,大部分是供自己思考反思作用,思路、題目等有不少來自各種資料。大部分有附代碼,需要題目自行搜索引擎。

我又開坑啦,考慮到還是以文化課為重,這次五十題給了很多時間,希望能及時刷完…

目前已涉及的算法有:堆。

1.建堆+堆排序

技術分享
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 int h[101];
 6 int n;
 7 void swap(int
x,int y) 8 { 9 int t; 10 t=h[x]; 11 h[x]=h[y]; 12 h[y]=t; 13 } 14 void siftdown (int i) 15 { 16 int t,flag=0; 17 while (i*2<=n && flag==0) { 18 if (h[i]>h[i*2]) t=i*2; 19 else t=i; 20 if (i*2+1<=n) { 21 if (h[t]>h[i*2+1]) t=i*2
+1; 22 } 23 if (t!=i) { 24 swap(t,i); 25 i=t; 26 } 27 else flag=1; 28 } 29 } 30 void creat() 31 { 32 int i; 33 for (i=n/2; i>=1; i--) siftdown(i); 34 } 35 int deletemax() 36 { 37 int t; 38 t=h[1]; 39 h[1]=h[n]; 40 n--;
41 siftdown(1); 42 return t; 43 } 44 int main() 45 { 46 int i,num; 47 scanf("%d",&num); 48 for (i=1; i<=num; i++) scanf("%d",&h[i]); 49 n=num; 50 creat(); 51 for (i=1; i<=num; i++) printf("%d ",deletemax()); 52 getchar(); 53 return 0; 54 }
建堆+堆排序

修建中…

②2017=5.13-7.1