随机停车

假设某段马路的指定停车区间为 [0,6] ,车长L为2,随机停车 ...

#include <iostream>
#include <cstdlib>   
#include <ctime>  
using namespace std;
int L; //车长
int parking(int low, int high) { //在low~high间随机停的车的数量
	if(high - low < L) return 0;
	else {
		srand(time(0)); 
		int x = low + rand() % (high - L - low + 1); //在[low,high-L]区间随机取一个位置为车子‘前沿点’的位置
		//cout << "x = " << x << endl;
		return parking(low, x) + 1 + parking(x + L, high);
	}
}
int main() {
	L = 2;
	cout << parking(0, 6);
	return 0;
}

// x = 4
// x = 1
// 2

// x = 2
// x = 0
// x = 4
// 3

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。编制一程序模拟该停车场的管理。(2) 实现要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。(2) 实现提示:汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(’A’,1,5)表示1号牌照车在5时刻到达,而(’D’,5,20)表示5号牌照车在20时刻离去。整个程序可以在输入信息为(’E’,0,0)时结束。本题可用顺序存储结构和链式存储结构来实现。本人的一个数据结构课程设计(用C++源码实现,供大家学习参考之用,有不妥之处望指正)
》问题描述<br>设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已经停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出场为它让路,待该辆车开出大门外,其他车辆再按次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,试为停车场编制按上述要求进行管理的模拟程序。<br>》基本要求<br>以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现。队列以链表结构实现。<br>》测试数据<br>设n=2,输入数据为:(‘A’,1,5), (‘A’,2,10), (‘D’,1,15), (‘A’,3,20), (‘A’,4,25), (‘A’,5,30), (‘D’,2,35), (‘D’,4,40), (‘E’,0,0)。其中:‘A’表示到达(Arrival),‘D’表示离去(Departure),‘E’表示输入结束(End)。<br>》实现提示<br>需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值