在0 / 1背包問題中,需對(duì)容量為c 的背包進(jìn)行裝載。從n 個(gè)物品中選取裝入背包的物品,每件物品i 的重量為wi ,價(jià)值為pi 。對(duì)于可行的背包裝載,背包中物品的總重量不能超過背包的容量,最佳裝載是指所裝入的物品價(jià)值最高,即n ?i=1pi xi 取得最大值。約束條件為n ?i =1wi xi≤c 和xi?[ 0 , 1 ] [ 1≤i≤n]。
標(biāo)簽: 背包問題
上傳時(shí)間: 2017-03-28
上傳用戶:6546544
常見的實(shí)現(xiàn)方法是使用兩個(gè)數(shù)組, t[n-1]和e[n],數(shù)組e存放所有的參加排序的元素,在完全二叉樹中是葉子結(jié)點(diǎn),t[]存放 的是比賽的階段性勝者的編號(hào),再進(jìn)行n趟比賽排序結(jié)束,時(shí)間復(fù)雜度是O(n*log2(n)), 其實(shí)我覺得也可以只通過一個(gè)數(shù)組A[2*n-1]也可以實(shí)現(xiàn),只是標(biāo)號(hào)的換算有點(diǎn)復(fù)雜而已.
標(biāo)簽: 實(shí)現(xiàn)方法 數(shù)組
上傳時(shí)間: 2017-05-02
上傳用戶:dragonhaixm
哈夫曼樹又稱最優(yōu)二叉樹,是一種帶權(quán)路徑長度最短的二叉樹。所謂樹的帶權(quán)路徑長度,就是樹中所有的葉結(jié)點(diǎn)的權(quán)值乘上其到根結(jié)點(diǎn)的路徑長度(若根結(jié)點(diǎn)為0層,葉結(jié)點(diǎn)到根結(jié)點(diǎn)的路徑長度為葉結(jié)點(diǎn)的層數(shù))。樹的帶權(quán)路徑長度記為WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N個(gè)權(quán)值Wi(i=1,2,...n)構(gòu)成一棵有N個(gè)葉結(jié)點(diǎn)的二叉樹,相應(yīng)的葉結(jié)點(diǎn)的路徑長度為Li(i=1,2,...n)。可以證明哈夫曼樹的WPL是最小的。
上傳時(shí)間: 2017-06-09
上傳用戶:wang5829
//顏色初始化 if(!has_colors() || start_color() == ERR){ endwin() printf("Terminal does not support color.\n") exit(1) } init_pair(1, COLOR_GREEN, COLOR_BLACK) init_pair(2, COLOR_RED, COLOR_BLACK) init_pair(3, COLOR_CYAN, COLOR_BLACK) init_pair(4, COLOR_WHITE, COLOR_BLACK) init_pair(5, COLOR_MAGENTA, COLOR_BLACK) init_pair(6, COLOR_BLUE, COLOR_BLACK) init_pair(7, COLOR_YELLOW, COLOR_BLACK) //寫字符串 for(i = 1 i <= 7 i++) { attron(COLOR_PAIR(i)) printw("color pair d in normal mode\n", i) } for(i = 1 i <= 7 i++) { attron(COLOR_PAIR(i) | A_BLINK | A_UNDERLINE) printw("color pair d in normal mode\n", i) }
標(biāo)簽: start_color has_colors Terminal endwin
上傳時(shí)間: 2014-01-14
上傳用戶:vodssv
題目:加密軟件 要求:(1)輸入任意一段明文M,以及密鑰K (2)根據(jù)一下公式將其轉(zhuǎn)換為密文C。 Ci = mi + K ,其中i = 0,1,……n-1 , K 為密鑰; (3)具有輸入輸出界面。
上傳時(shí)間: 2013-11-25
上傳用戶:shawvi
g a w k或GNU awk是由Alfred V. A h o,Peter J.We i n b e rg e r和Brian W. K e r n i g h a n于1 9 7 7年為U N I X創(chuàng)建的a w k編程語言的較新版本之一。a w k出自創(chuàng)建者姓的首字母。a w k語言(在其所有的版本中)是一種具有很強(qiáng)能力的模式匹配和過程語言。a w k獲取一個(gè)文件(或多個(gè)文件)來查找匹配特定模式的記錄。當(dāng)查到匹配后,即執(zhí)行所指定的動(dòng)作。作為一個(gè)程序員,你不必操心通過文件打開、循環(huán)讀每個(gè)記錄,控制文件的結(jié)束,或執(zhí)行完后關(guān)閉文件。
上傳時(shí)間: 2014-01-02
上傳用戶:hwl453472107
#include <iostream> using namespace std; int main(){ int t; cin>>t; while(t--){ long long n; cin>>n; if(n%2==1) cout<<(n*n-1)/4<<endl; else if (n%4==0) cout <<(n*n)/4-1<<endl; else{ if(n==2) cout<<1<<endl; else{ long long k=n/2-1; cout <<k*k+2*k-3<<endl; } } } return 0; }
標(biāo)簽: 天津大學(xué)acm4022 代碼
上傳時(shí)間: 2015-04-20
上傳用戶:nr607
#include <iostream> using namespace std; class Student { public: Student(int, int); int num; int grade; }; Student::Student(int n, int g) { num = n; grade = g; } int maxGradeIndex(Student* s) { int maxGrade, index = 0, i = 0; maxGrade = s[0].grade; for (i = 0; i<5; i++) { if (s[i].grade > maxGrade) { maxGrade = s[i].grade; index = i; } } return index; } int main() { Student a[5] = { Student(1, 86), Student(2, 60), Student(3, 72), Student(4, 95), Student(5, 66) }; int maxGradeStNum = maxGradeIndex(a); cout << "成績最好學(xué)生的學(xué)號(hào)是:" << a[maxGradeStNum].num << endl; cout << "成績最好學(xué)生的成績是:" << a[maxGradeStNum].grade << endl; getchar(); return 0; }
上傳時(shí)間: 2016-04-23
上傳用戶:burt1025
1.Describe a Θ(n lg n)-time algorithm that, given a set S of n integers and another integer x, determines whether or not there exist two elements in S whose sum is exactly x. (Implement exercise 2.3-7.) #include<stdio.h> #include<stdlib.h> void merge(int arr[],int low,int mid,int high){ int i,k; int *tmp=(int*)malloc((high-low+1)*sizeof(int)); int left_low=low; int left_high=mid; int right_low=mid+1; int right_high=high; for(k=0;left_low<=left_high&&right_low<=right_high;k++) { if(arr[left_low]<=arr[right_low]){ tmp[k]=arr[left_low++]; } else{ tmp[k]=arr[right_low++]; } } if(left_low<=left_high){ for(i=left_low;i<=left_high;i++){ tmp[k++]=arr[i]; } } if(right_low<=right_high){ for(i=right_low;i<=right_high;i++) tmp[k++]=arr[i]; } for(i=0;i<high-low+1;i++) arr[low+i]=tmp[i]; } void merge_sort(int a[],int p,int r){ int q; if(p<r){ q=(p+r)/2; merge_sort(a,p,q); merge_sort(a,q+1,r); merge(a,p,q,r); } } int main(){ int a[8]={3,5,8,6,4,1,1}; int i,j; int x=10; merge_sort(a,0,6); printf("after Merging-Sort:\n"); for(i=0;i<7;i++){ printf("%d",a[i]); } printf("\n"); i=0;j=6; do{ if(a[i]+a[j]==x){ printf("exist"); break; } if(a[i]+a[j]>x) j--; if(a[i]+a[j]<x) i++; }while(i<=j); if(i>j) printf("not exist"); system("pause"); return 0; }
上傳時(shí)間: 2017-04-01
上傳用戶:糖兒水嘻嘻
取各障礙物頂點(diǎn)連線的中點(diǎn)為路徑點(diǎn),相互連接各路徑點(diǎn),將機(jī)器人移動(dòng)的起點(diǎn)和終點(diǎn)限制在各路徑點(diǎn)上,利用最短路徑算法來求網(wǎng)絡(luò)圖的最短路徑,找到從起點(diǎn)P1到終點(diǎn)Pn的最短路徑。上述算法使用了連接線中點(diǎn)的條件,因此不是整個(gè)規(guī)劃空間的最優(yōu)路徑,然后利用遺傳算法對(duì)找到的最短路徑各個(gè)路徑點(diǎn)Pi (i=1,2,…n)調(diào)整,讓各路徑點(diǎn)在相應(yīng)障礙物端點(diǎn)連線上滑動(dòng),利用Pi= Pi1+ti×(Pi2-Pi1)(ti∈[0,1] i=1,2,…n)即可確定相應(yīng)的Pi,即為新的路徑點(diǎn),連接此路徑點(diǎn)為最優(yōu)路徑。
標(biāo)簽: 遺傳算法 路徑規(guī)劃 matlab
上傳時(shí)間: 2017-05-05
上傳用戶:tttt123
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1