旅业认证二维码有什么用,seo公司厦门,国内正规seo网络推广,wordpress 播客主题http://poj.org/problem?id1250
题意大意
住宿床位有限#xff0c;按顺序入住#xff0c;用ABC等代表单个人#xff0c;第1次出现代表入住#xff0c;第2次出现代表离开
输入#xff1a; 1 ABCBCA 代表有1个床位#xff0c; A入住#xff0c; B入住#xff0c;入住…http://poj.org/problem?id1250
题意大意
住宿床位有限按顺序入住用ABC等代表单个人第1次出现代表入住第2次出现代表离开
输入 1 ABCBCA 代表有1个床位 A入住 B入住入住失败 C入住入住失败 B离开共1人离开未住店 C离开共2人离开未住店 A离开
计算有几个人来了没床位离开了
思路
用2个链表存储床位上的人等待队列的人
人如果在上述2个链表中就删除不在就插入队列
代码 #include iostream
using namespace std;
struct node
{char data;node* next;node():data(\0),next(NULL){}node(char ch):data(ch),next(NULL){}~node(){ }
};
struct list
{node* p_head;size_t listLength;list():p_head(NULL),listLength(0){}~list(){ eraseAll();}void eraseAll(){if(p_head){node *delnode p_head, *tempnode p_head;while(tempnode-next ! NULL){tempnode delnode-next;delete delnode;delnode tempnode;}listLength 0;}}void push_front(char ch){node *tempNode new node(ch);listLength;tempNode-next p_head;p_head tempNode;}node* find(char ch){node* temp p_head;if(p_head){while(temp ! NULL temp-data ! ch){temp temp-next;}} else{temp NULL;}return temp;}void delNode(char ch){node* tempnode p_head, *delnode;delnode find(ch);if(delnode delnode ! p_head){while(tempnode-next ! delnode){tempnode tempnode-next;}tempnode-next delnode-next;delete delnode;listLength--;}else{if(delnode p_head delnode){p_head delnode-next;delete delnode;listLength--;}}}
};int main()
{list beds,waitlist; //床位队列等待队列node *tempnode NULL;size_t numsofbed, walkedaway 0;char ch;while(cin numsofbed numsofbed) //输入床位数且不为0{cin.get(); //拿掉空格while(cin.get(ch) ch ! \n) //输入每个人{tempnode beds.find(ch); //去床位队列查找人if(tempnode) //找到了这个人床位上这个人离店{beds.delNode(ch);}else //没有在床位上找到该人则该人需要住店{if(beds.listLength numsofbed) //床位有空余{beds.push_front(ch); //这个人住下}else //床位满了{if(waitlist.find(ch)) //这个人已经在等待队列里{waitlist.delNode(ch); //等不了了离开等待队列walkedaway;}else //这个人不在等待队列里可以等待{waitlist.push_front(ch);}}}}if(walkedaway 0){cout All customers tanned successfully. endl;}else{cout walkedaway customer(s) walked away. endl;}beds.eraseAll();waitlist.eraseAll();walkedaway 0;numsofbed 0;}return 0;
}