⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huichang.cpp

📁 对贪心算法的应用
💻 CPP
字号:
#include<fstream.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
/*
int Partition(int a[], int low, int high )//划分
{
	int i,j;
	int x = a[low];
	i = low;
	j = high;
	while(i<j)
	{
		while(i<j&&x < a[j])
		{
			j = j - 1;
		}
		if(i<j)
		{
			a[i] = a[j];
			i=i+1;
		}
		while(i<j&&x >= a[i])
		{
			i = i + 1;
		}
		if(i<j)
		{
			a[j] = a[i];
			j=j-1;
		}
	}
	a[i] = x;
	return i;
}

void QuickSort(int a[], int low, int high)
{
	int Position;
	if(low < high)
	{
		Position = Partition(a,low,high);
		QuickSort(a, low, Position-1);
		QuickSort(a, Position+1, high);
	}
}
*/
//交换函数
void swap1(int *a,int *b){
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
}
//选择排序
void sort1(int *a,int b[],int as)
{
	int i,j,index;
    int elem;
	for(i=0;i<as-1;i++){
		elem=*(a+i);
		index=i;
		for(j=i+1;j<as;j++){
			if(*(a+j)<elem){
				elem=*(a+j);
				index=j;
			}
			else if((*(a+j)==elem) && (b[j]<b[i])){//开始时间相同,比较结束时间
				elem=*(a+j);
			    index=j;
			}
		}
				
			swap1(a+i,a+index);
			swap1(&b[i],&b[index]);
	}

}
//会场安排函数
int schedule(int a[],int b[],int s,int e)
{
	int n=0;
	int i=s+1;
	if ( a[s]>-1 )
	{     
		n=1;
		for(;i<=e;i++)
		{
			if ( a[i]>=b[s] )    //有一个活动结束,新活动可在已空闲的会场进行。
			{
				s++;
			}
			else
			{
				n++;       //要增开一会场     
			}
		}
	}
	return n;
}

void main( )
{
	ifstream fin("input.txt");
	ofstream fout("output.txt");
	int n;
	fin>>n;  //读入会场数
	int *st=new int[n];   //开始时间
	int *et=new int[n];   //结束时间
	for(int i=0;i<n;i++)
	{
		fin>>st[i]>>et[i];      //读入开始和结束时间
	}
	cout<<"排序前---------------"<<endl<<"开始时间"<<endl;
	for( i=0;i<n;i++)
		cout<<" "<<st[i];
	cout<<endl<<"结束时间"<<endl;
	for( i=0;i<n;i++)
		cout<<" "<<et[i];
	sort1(st,et,n);
	//QuickSort(st,0,n-1);
	//QuickSort(et,0,n-1);
	cout<<endl<<endl<<"排序后---------------"<<endl<<"开始时间"<<endl;
    for( i=0;i<n;i++)
		cout<<" "<<st[i];
	cout<<endl<<"结束时间"<<endl;
	for( i=0;i<n;i++)
		cout<<" "<<et[i];
	fout<< schedule(st,et,0,n-1) <<endl; //把所需会场数写入文件
	delete []st;
	delete []et;
	cout<<endl<<"--------------所需会场数是-----------------------"<<"\t"<<endl;
    ifstream fin1("output.txt");         
	fin1>>n;                             //将所需会场数读出
	cout<<n<<endl;
	fin.close();                          //关闭文件流
	fout.close();
	fin1.close();                   

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -