CodeForces - 1200A

这篇博客解析了一道编程问题,讲述了如何根据顾客进出酒店的行为恢复房间分配。通过阅读和处理输入字符串,利用C++实现逻辑来重构房间状态。

CodeForces - 1200A
阿姆河有一家由10间客房组成的酒店。房间从左到右从0到9编号。

酒店有两个入口——一个从左端,另一个从右端。当顾客通过左入口到达酒店时,他们被分配到离左入口最近的一个空房间。同样,当顾客通过正确的入口到达酒店时,他们会被分配到离右入口最近的一个空房间。

有一天,阿木错了房间分配单。谢天谢地,Amugae的记忆是完美的,他记得所有的顾客:当顾客到达,从哪个入口,什么时候离开酒店。一开始旅馆是空的。编写一个程序,从Amugae的内存中恢复房间分配列表。

输入

第一行由整数n(1≤n≤105)组成,即Amugae内存中的事件数。

第二行由一个长度为n的字符串组成,按时间顺序描述事件。每个字符代表:

“L”:一位顾客从左入口到达。

“R”:顾客从右边的入口到达。

“0”、“1”、“…”、“9”:房间x(分别为0、1、…、9)的客户离开。

保证顾客到达时至少有一个空房间,当给定x(0,1,…,9)时,房间x中有一个顾客。而且,所有房间最初都是空的。

输出

在唯一的行中,输出酒店房间的分配状态,从房间0到房间9。将空房间表示为“0”,将已占用房间表示为“1”,不带空格。

Input
8
LLRL1RL1

Output
1010000011

Input
9
L0L0LLRR9

Output
1100000010

(很有意思的一题)
步骤:
1.判断s[i],有三种情况"L",“R”,else(就是0到9)
2.输出room的数组
care:
1.检索到一个空房间,负值完1就break
2.if elseif else

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int n; cin >> n; int i; int room[105] = {0};
	string s; cin >> s;
	for (i = 0; i < s.size(); i++)
	{
		if (s[i] == 'L')
		{
			for (int j= 0; j < 10; j++)
			{
				if (room[j] == 0) { room[j] = 1; break; }
			}
		}
		else if (s[i] == 'R')
		{
			for (int j = 9; j >= 0; j--)
			{
				if (room[j] == 0) { room[j] = 1; break; }
			}
		}
		else
		{
			room[s[i] - '0' ]=0;
		}
	}
	for (i = 0; i < 10; i++)
		cout << room[i];
	return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值