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; }