int _tmain(int argc, _TCHAR* argv[]) {
ifstream in(\int x,y, k, value; in >> x >> y ;
Grid * grid = new Grid(y, x);
value = 0;
//this block initializes the grid items with ifstream. while (true) {
if (in.eof()) {
break; }
in >> k;
grid->item(value%grid->m_width, value/grid->m_width) = k; value++; }
grid->displayGrid(); grid->run();//done grid->print(); cin >>x;
delete grid; grid = NULL; in.close(); return 0; }
应百度网友wu329613403的要求,花半小时写了个大体思路,最近太忙了,只能写个思路,估计有不完善的地方,欢迎指正。(注意题目中没有给将距离与时间沟通起来的教师行进速度,我认为应该给。)
A,假设家长数目为N,从文件读取家长的时间表,定义一个家长类,包括的成员为开始时间,结束时间,家长编号,存储到其余每个家长的距离的一个数组,从文件读入多少个家长就创建多少个家长对象,用一个容器C1来存放N个家长对象的指针,定义一个容器C2保存家长的拜访情况.
B,删除安排时间段小于45分钟的家长,根据每个家长的开始时间对容器C1中的家长进行排序,时间早的排在最前面。
C,选取开始时间最早的家长作为当前准备拜访的家长,拜访时间持续45分钟,将当前家长的拜访情况保存到容器C2,同时从容器C1中删除当前家长的信息。 D,用当前家长到其余每个(未拜访)的家长的时间加上各个家长的开始时间作为每个家长的新的开始时间,重新对容器C1按照新的开始时间进行排序,对容器中的家长C1[i]进行判断(i从0开始):
if(当前家长的开始时间比现在的时间早(小,意思是已经错过了)) {
新拜访结束时刻1 = 当前时时刻+ 刚刚拜访的家长到当前家长C1[i]需要的时间长度 + 45分钟;
if (新拜访结束时刻1 比 家长C1[i]的结束时刻早(或者为同一个时刻)) {
拜访这个家长C1[i],时间持续45分钟; 将拜访信息添加到C2;
从C1中删除当前家长C1[i];
if(C1不为空) {
goto D;(意思是:重复步骤D的内容) } else {
goto E;(去输出C2的内容) } } else {
从C1中删除当前家长C1[i]; }
} else {
拜访容器C1中的排第一的家长,时间持续45分钟;(出现这种情况,就是老师走到下个拜访的家长的时候,拜访时间还没有开始,需要等待一段时间,实际上这样的情况是浪费了时间了,谁叫这个家长的开始时间安排的晚呢,不能怪老师。)
将拜访信息添加到C2;
从C1中删除当前家长C1[i];
if(C1不为空) {
goto D;(意思是:重复步骤D的内容) } else {
goto E;(去输出C2的内容) } }
E,根据容器C2的拜访记录输出家访安排计划。