不知道有没有没考虑的 希望大家指正
头文件
#include "iostream"
using namespace std ;
typedef struct Element
{
int StartTime ;
int EndTime ;
int Value ;
} Element ;
void CreatElement(Element* &e , int* num) ;
void DeleteElement(Element* &e);
void SortElement(Element* e , int num);
void Compete(Element* e , int num);
源文件
#include "MachineWork.h"
void CreatElement(Element* &e , int* num)
{
int n , i
;
/*cout<<"Please input the num of element: ";*/
cin>>n ;
*num = n ;
Element* ElementPtr = new Element[n] ;
if(!ElementPtr)
return ;
for(i = 0 ; i < n ; ++i)
{
cin>>ElementPtr[i].StartTime>>ElementPtr[i].EndTime
>>ElementPtr[i].Value;
}
e = ElementPtr ;
}
void DeleteElement(Element* &e)
{
delete[] e ;
e = NULL;
}
void SortElement(Element* e , int num)
{
Element temp_e ;
int i , j;
for(i = 0 ; i < num ; ++i)
{
for(j = i ; j < num ; ++j)
{
if(e[i].StartTime > e[j].StartTime)
{
temp_e = e[i];
e[i] = e[j] ;
e[j] = temp_e ;
}
}
}
}
void Compete(Element* e , int num)
{
int* array_ptr = new int[num] ;
int i , j ,k , temp;
if(!array_ptr)
return ;
memset(array_ptr , 0 , sizeof(int)*num);
for(i = 0 ; i < num
; ++i)
{
array_ptr[i] = e[i].Value;
for(j = i ; j < num - 1 ; ++j)
{
if(e[j].EndTime <= e[j + 1].StartTime )
{
array_ptr[i] += e[j + 1].Value;
}
else
{
if(e[i].EndTime <= e[j + 2].StartTime && j+2 < num)
array_ptr[i] += e[j + 2].Value ;
else
++j;
}
}
for(k = i ; k > 0 ; --k)
{
if(e[k].StartTime >= e[k-1].EndTime)
array_ptr[i] += e[k - 1].Value;
else
{
if(e[i].StartTime >= e[k-2].EndTime && k-2 >=0)
{
array_ptr[i] += e[k-2].Value;
}else
--k;
}
}
}
temp = array_ptr[0]
;
cout<<temp<<endl;
delete[] array_ptr ;
array_ptr = NULL ;
}
int main()
{
Element* e = NULL ;
int num ;
CreatElement(e , &num) ;
SortElement(e , num);
Compete(e , num);
DeleteElement(e) ;
return 0 ;
}