POJ1250解题报告
发布日期:2021-07-24 21:57:41 浏览次数:10 分类:技术文章

本文共 1318 字,大约阅读时间需要 4 分钟。

题意

题意:这个题的意思比较复杂。我大致解释一下

旅馆房间有限,先到先入住,后到后入住,用ABCDEF等字符代表单个人,第一次出现代表入住,第二次出现代表离开

这样我们就可以读懂题了,

比如input的

2 ABBAJJKZKZ
代表有两间房,一个一个读过去,
第一个是A,房给他一间,还剩一间
第二个是B ,房给他一件,没有了
第三个是B,B退房了,所以房又有一间了
第四个是A,A退房了,房又有两间了
… 依次循环,最后看有几个人来旅馆了没地方住离开了

思路

就像我分析的题目意思那样

我设置了两个存储结构,第一个是char Intemp[],存储已经入住的旅客
第二个是char Outtemp[],存储离开的旅客
我把每次读进来的字符分为多种
第一种:在Intemp里面的旅客,这样我就把客房数(remain)-1;把Intemp里面的姓名抹掉
第二种:在Outtemp里面的旅客,把其在outtemp里名字抹掉
第三种,刚来能住店的旅客,把它存进Intemp里面
第四种,客满离开的旅客,把它存进Outtemp里面

代码

#include 
#include
char Intemp[1000]; //存储入住的客人名char Outtemp[1000]; //存储离开的客人名using namespace std;int Isin(char a){ //在Intemp里面查找客人名 for(int i=0;i<1000;i++){ if(Intemp[i]==a){ return 1; } } return 0;}int Isout(char a){ //在outtemp里面查找客人名 for(int i=0;i<1000;i++){ if(Outtemp[i]==a){ return 1; } } return 0;}void InsertIn(char a){ Intemp[strlen(Intemp)]=a;}void Insertout(char a){ Outtemp[strlen(Outtemp)]=a;}void LeaveIn(char a){ for(int i=0;i<1000;i++){ if(Intemp[i]==a){ Intemp[i]=' '; } }}void LeaveOut(char a){ for(int i=0;i<1000;i++){ if(Outtemp[i]==a){ Outtemp[i]=' '; } }}int main(){ int n; string s; while(cin>>n>>s && n!=0){ int remain = n;int leave=0; for(int i=0;i

转载地址:https://blog.csdn.net/qq_23100787/article/details/48418475 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:经典习题之费式数列
下一篇:晚读->写在考试前

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月09日 00时58分45秒