-
在0 / 1背包問題中,需對容量為c 的背包進行裝載。從n 個物品中選取裝入背包的物品,每件物品i 的重量為wi ,價值為pi 。對于可行的背包裝載,背包中物品的總重量不能超過背包的容量,最佳裝載是指所裝入的物品價值最高,即n ?i=1pi xi 取得最大值。約束條件為n ?i =1wi xi≤c 和xi?[ 0 , 1 ] [ 1≤i≤n]。
標簽:
背包問題
上傳時間:
2017-03-28
上傳用戶:6546544
-
常見的實現方法是使用兩個數組,
t[n-1]和e[n],數組e存放所有的參加排序的元素,在完全二叉樹中是葉子結點,t[]存放
的是比賽的階段性勝者的編號,再進行n趟比賽排序結束,時間復雜度是O(n*log2(n)),
其實我覺得也可以只通過一個數組A[2*n-1]也可以實現,只是標號的換算有點復雜而已.
標簽:
實現方法
數組
上傳時間:
2017-05-02
上傳用戶:dragonhaixm
-
哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的路徑長度(若根結點為0層,葉結點到根結點的路徑長度為葉結點的層數)。樹的帶權路徑長度記為WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N個權值Wi(i=1,2,...n)構成一棵有N個葉結點的二叉樹,相應的葉結點的路徑長度為Li(i=1,2,...n)。可以證明哈夫曼樹的WPL是最小的。
標簽:
樹
二叉樹
上傳時間:
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)
}
標簽:
start_color
has_colors
Terminal
endwin
上傳時間:
2014-01-14
上傳用戶:vodssv
-
題目:加密軟件
要求:(1)輸入任意一段明文M,以及密鑰K
(2)根據一下公式將其轉換為密文C。
Ci = mi + K ,其中i = 0,1,……n-1 , K 為密鑰;
(3)具有輸入輸出界面。
標簽:
加密軟件
輸入
上傳時間:
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創建的a w k編程語言的較新版本之一。a w k出自創建者姓的首字母。a w k語言(在其所有的版本中)是一種具有很強能力的模式匹配和過程語言。a w k獲取一個文件(或多個文件)來查找匹配特定模式的記錄。當查到匹配后,即執行所指定的動作。作為一個程序員,你不必操心通過文件打開、循環讀每個記錄,控制文件的結束,或執行完后關閉文件。
標簽:
V.
Alfred
GNU
awk
上傳時間:
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;
}
標簽:
天津大學acm4022
代碼
上傳時間:
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 << "成績最好學生的學號是:" << a[maxGradeStNum].num << endl;
cout << "成績最好學生的成績是:" << a[maxGradeStNum].grade << endl;
getchar();
return 0;
}
標簽:
c語言
程序
上傳時間:
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;
}
標簽:
c語言
算法
排序
上傳時間:
2017-04-01
上傳用戶:糖兒水嘻嘻
-
取各障礙物頂點連線的中點為路徑點,相互連接各路徑點,將機器人移動的起點和終點限制在各路徑點上,利用最短路徑算法來求網絡圖的最短路徑,找到從起點P1到終點Pn的最短路徑。上述算法使用了連接線中點的條件,因此不是整個規劃空間的最優路徑,然后利用遺傳算法對找到的最短路徑各個路徑點Pi (i=1,2,…n)調整,讓各路徑點在相應障礙物端點連線上滑動,利用Pi= Pi1+ti×(Pi2-Pi1)(ti∈[0,1] i=1,2,…n)即可確定相應的Pi,即為新的路徑點,連接此路徑點為最優路徑。
標簽:
遺傳算法
路徑規劃
matlab
上傳時間:
2017-05-05
上傳用戶:tttt123