fenshijin

#include<stdio.h> int map[6][4]={8,0,18,10,      13,10,15,20,      10,50,13,30,               13,20,18,10,      12,0,12,50,      12,0,15,30}; typedef struct node{  int star;  int end; }node; node A[100]; node B[100]; node dui[100]; int step[6]={0}; int max=0; int sum; void pan(int a[]) {  sum=0;  int q=-1;  int p=-1;  for(int i=0;i<6;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;   }  } }

void dfs(int a) {  if(a==6)  {   pan(step);   if(max<sum)    max=sum;   return;  }  for(int i=0;i<=2;i++)  {   step[a]=i;   dfs(a+1);  } } int main() {  node tmp;  int a=0;  for(int i=0;i<6;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<5;a++)   {    for(int b=0;b<5;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/6169861.html