1. 程式人生 > >會場安排課程設計

會場安排課程設計

while all got gin 開始時間 gree std 數組 n)

給一些活動,要求分配會場。

#include<stdio.h>
#include<stdlib.h>
int greedySelector(int *s,int *f,int len)
{
int n = len - 1;
int count = 0;
int j = 0;
int flag = 1;
int num = 0;

//for(int i=0;i<len-1;i++) //判斷時間是否正確
//{
// if((s[i]>=f[i])||(s[i]<0)||(f[i]<0))
// {
// printf("事件%d輸入有誤,請重新輸入\n",i+1);
// printf("開始時間:");
// scanf("%d",&s[i]);
// printf("結束時間:");
// scanf("%d",&f[i]);
//
// }
//
// i--;
//}

int tmp1; //保證事件結束時間非減序
for(int i=0;i<n;i++)
{
for(int k=0;k<n-i;k++)
{
if(f[k]>f[k+1])
{
tmp1 = f[k];
f[k] = f[k+1];
f[k+1] = tmp1;


tmp1 = s[k];
s[k] = s[k+1];
s[k+1] = tmp1;
}
}
}
int *tmp = (int *)malloc(n*sizeof(int));//給標記數組初始化
for(int i=0;i<=n;i++)
{
tmp[i] = 0;
}
tmp[0] = 1;

printf("事件:%d 開始:%d 結束:%d\n",1,s[0],f[0]);
while(count<n)
{
for(int i=0;i<=n;i++)
{
if(tmp[i] == 0)
{
if(flag==0)
{
flag = 1;
j = i;
tmp[j] = 1;
printf("事件:%d 開始:%d 結束:%d\n",i+1,s[i],f[i]);
count++;
}
if(s[i]>=f[j])
{
j = i;
tmp[i] = 1;
printf("事件:%d 開始:%d 結束:%d\n",i+1,s[i],f[j]);
count++;

}
}

}
num++;
printf("~~~~~~~~~~《會場:%d》~~~~~~~~~~~~~~\n",num);
flag = 0;
}

return num;
}
int main()
{

///*int srr[] = {3,1};
//int frr[] = {5,3};*/
//int srr[] = {1,3,0,5,3,5,6,8,8,2,12};//test
//int frr[] = {4,5,6,7,8,9,10,11,12,13,14};
printf("~~~~~~~~~MENU~~~~~~~~~~\n");
printf(" 1.會場安排\n");
printf(" 2.退出\n");
int eg1;
scanf("%d",&eg1);
if(eg1 != 1)
{
return 0;
}

int events; //輸入數據
int flag1 = 1;
printf("事件總個數:");
scanf("%d",&events);
int *srr = (int*)malloc(events*sizeof(int));
int *frr = (int*)malloc(events*sizeof(int));
for(int i=0;i<events;i++)
{
printf("事件%d",i+1);
printf("事件%d\n",i+1);
printf("開始時間:");
scanf("%d",&srr[i]);
printf("結束時間:");
scanf("%d",&frr[i]);
begin:if((srr[i]>=frr[i])||(srr[i]<0)||(frr[i]<0))
{
printf("事件%d輸入有誤,請重新輸入\n",i+1);
printf("開始時間:");
scanf("%d",&srr[i]);
printf("結束時間:");
scanf("%d",&frr[i]);
goto begin;
}



}
printf("共%d個會場\n",greedySelector(srr,frr,events));
free(srr);
free(frr);
return 0;
}

會場安排課程設計