-
在0 / 1背包問(wèn)題中,需對(duì)容量為c 的背包進(jìn)行裝載。從n 個(gè)物品中選取裝入背包的物品,每件物品i 的重量為wi ,價(jià)值為pi 。對(duì)于可行的背包裝載,背包中物品的總重量不能超過(guò)背包的容量,最佳裝載是指所裝入的物品價(jià)值最高,即n ?i=1pi xi 取得最大值。約束條件為n ?i =1wi xi≤c 和xi?[ 0 , 1 ] [ 1≤i≤n]。
標(biāo)簽:
背包問(wèn)題
上傳時(shí)間:
2017-03-28
上傳用戶:6546544
-
常見(jiàn)的實(shí)現(xiàn)方法是使用兩個(gè)數(shù)組,
t[n-1]和e[n],數(shù)組e存放所有的參加排序的元素,在完全二叉樹(shù)中是葉子結(jié)點(diǎn),t[]存放
的是比賽的階段性勝者的編號(hào),再進(jìn)行n趟比賽排序結(jié)束,時(shí)間復(fù)雜度是O(n*log2(n)),
其實(shí)我覺(jué)得也可以只通過(guò)一個(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
-
哈夫曼樹(shù)又稱最優(yōu)二叉樹(shù),是一種帶權(quán)路徑長(zhǎng)度最短的二叉樹(shù)。所謂樹(shù)的帶權(quán)路徑長(zhǎng)度,就是樹(shù)中所有的葉結(jié)點(diǎn)的權(quán)值乘上其到根結(jié)點(diǎn)的路徑長(zhǎng)度(若根結(jié)點(diǎn)為0層,葉結(jié)點(diǎn)到根結(jié)點(diǎn)的路徑長(zhǎng)度為葉結(jié)點(diǎn)的層數(shù))。樹(shù)的帶權(quán)路徑長(zhǎng)度記為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)的二叉樹(shù),相應(yīng)的葉結(jié)點(diǎn)的路徑長(zhǎng)度為L(zhǎng)i(i=1,2,...n)。可以證明哈夫曼樹(shù)的WPL是最小的。
標(biāo)簽:
樹(shù)
二叉樹(shù)
上傳時(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)
//寫(xiě)字符串
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)具有輸入輸出界面。
標(biāo)簽:
加密軟件
輸入
上傳時(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編程語(yǔ)言的較新版本之一。a w k出自創(chuàng)建者姓的首字母。a w k語(yǔ)言(在其所有的版本中)是一種具有很強(qiáng)能力的模式匹配和過(guò)程語(yǔ)言。a w k獲取一個(gè)文件(或多個(gè)文件)來(lái)查找匹配特定模式的記錄。當(dāng)查到匹配后,即執(zhí)行所指定的動(dòng)作。作為一個(gè)程序員,你不必操心通過(guò)文件打開(kāi)、循環(huán)讀每個(gè)記錄,控制文件的結(jié)束,或執(zhí)行完后關(guān)閉文件。
標(biāo)簽:
V.
Alfred
GNU
awk
上傳時(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 << "成績(jī)最好學(xué)生的學(xué)號(hào)是:" << a[maxGradeStNum].num << endl;
cout << "成績(jī)最好學(xué)生的成績(jī)是:" << a[maxGradeStNum].grade << endl;
getchar();
return 0;
}
標(biāo)簽:
c語(yǔ)言
程序
上傳時(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;
}
標(biāo)簽:
c語(yǔ)言
算法
排序
上傳時(shí)間:
2017-04-01
上傳用戶:糖兒水嘻嘻
-
取各障礙物頂點(diǎn)連線的中點(diǎn)為路徑點(diǎn),相互連接各路徑點(diǎn),將機(jī)器人移動(dòng)的起點(diǎn)和終點(diǎn)限制在各路徑點(diǎn)上,利用最短路徑算法來(lái)求網(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