分时间uu

#include<stdio.h> int map[20][4]; typedef struct node{  int star;  int end; }node; node dui[100]; int step[14]; int max=0; int sum; int cass; int N; int flag; void pan(int a[]) {  flag=0;  sum=0;  int q=-1;  int p=-1;  for(int i=0;i<N;i++)  {   if(a[i]==0)   {    if(dui[i].star>=dui[q].end)    {     sum=sum+dui[i].end-dui[i].star;     q=i;    }    else     return;   }   else if(a[i]==1)   {    if(dui[i].star>=dui[p].end)    {     sum=sum+dui[i].end-dui[i].star;     p=i;    }    else     return;   }  }  flag=1; }

void dfs(int a) {  if(a==N)  {   pan(step);   if(max<sum&&flag==1)    max=sum;   return;  }  for(int i=0;i<=2;i++)  {   step[a]=i;   dfs(a+1);  } } int main() {  freopen("in.txt","r",stdin);  scanf("%d",&cass);  while(cass--)  {   scanf("%d",&N);   node tmp;   max=0;   for(int i=0;i<N;i++)   {    for(int j=0;j<4;j++)    {     scanf("%d",&map[i][j]);    }   }   for(int i=0;i<N;i++)   {    dui[i].star=map[i][0]*60+map[i][1];    dui[i].end=map[i][2]*60+map[i][3];   }    for(int a=0;a<N-2;a++)   {    for(int b=0;b<N-2;b++)    {     if(dui[b].star>dui[b+1].star)     {      tmp=dui[b];      dui[b]=dui[b+1];      dui[b+1]=tmp;     }    }   }   dfs(0);   printf("%d ",max);  }   return 0; }

原文地址:https://www.cnblogs.com/452035305qq/p/6206354.html