Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
终于AC了 够蛋疼.. 能做出此题的人 将来都是操作系统内核专家 : )/********************************************************/ /******************** 程序驱动核心 **********************/ /********************************************************/ while(1) { /***************** 读取当前时间每个人的行动 ********************/ for(int i=1;i<=nAgentNum_Copy;i++) { if(nNextHour[i]==SysHour //判断下次行动时间是否与系统时间一致 && nNextMin[i]==SysMin && nNextSec[i]==SysSec && bAgentExit[i]==false) { nCurrentActNum++; //当前行动人数增加1 nCurrentAgentNum[nCurrentActNum]=i; //记录当前行动人的编号 enCurrentAct[nCurrentActNum]=enNextAct[i]; //读取下次行动 存入当前行动 } } /****************** 分配当前行动 ************************/ for(int i=1;i<=nCurrentActNum;i++) { int ID=nCurrentAgentNum[i]; //读取当前行动人ID /******************* 分析当前行动 分配下次行动 *******************/ switch(enCurrentAct[i]) { case StayInElevator: { nActNumSum[ID]++; //行动人的行动总数加1 SaveAction(ID,nActNumSum[ID],StayInElevator); //保存行动人当前的行动和时间 if(nCurrentFloor[ID]>nDestinFloor[ID]) // nNextSec[ID]+=(nCurrentFloor[ID]-nDestinFloor[ID])*30; else nNextSec[ID]+=(nDestinFloor[ID]-nCurrentFloor[ID])*30; nCurrentFloor[ID]=nDestinFloor[ID]; TimeAdjust(nNextHour[ID],nNextMin[ID],nNextSec[ID],nAgentDay[ID]); if(nRoom[ID][nCurrentVisitNum[ID]+1]==0)//判断下次是继续进房还是没房进了 enNextAct[ID]=Exit; else enNextAct[ID]=ElevatorToRoom; break; } case RoomToRoom: Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator