06_动态规划科室

来源:互联网 发布:添加windows凭据 编辑:程序博客网 时间:2024/05/16 23:45
/*1、这个是动态规划科室安排的问题,以此类推其他问题;2、Node节点保存的是想要占用科室的时间,开始-结束,即代表一个单位的用时;*/using Node = struct node;struct node{     int begin;//开始时间    int end;//结束时间    bool flag;//这个是查看是否已经安排过这个单位};void getTime( vector<Node> &v ) { //v必须是根据开始时间begin拍好顺序的    int isContinue = v.size() ;    vector<vector<Node>> list;    while ( isContinue ) {         int first = -1;        int second = 0;        vector<Node> temp;        for (auto begin = v.begin(); begin != v.end(); ++begin ) {            if ( begin->flag==true ) {                if ( -1==first ) {                    first = begin->begin;                    second = begin->end;                    begin->flag = false;                    temp.push_back( *begin );                    --isContinue;                }                else {                    if ( second<begin->begin ) {                        second = begin->end;                        temp.push_back( *begin );                        begin->flag = false;                        --isContinue;                    }                }            }        }        list.push_back( temp );    }    for (auto begin = list.begin(); begin != list.end(); ++begin ) {        for (auto sonBegin = begin->begin(); sonBegin != begin->end(); ++sonBegin ) {            cout << sonBegin->begin << "---" << sonBegin->end << "   ";        }        cout << endl;    }}
原创粉丝点击