优先级队列的应用 之对扑克牌排序
2018-04-07 19:50
495 查看
#include <iostream>
#include <queue>
#include <functional>
#include <stdio.h>
#include <string.h>
using namespace std;
struct node
{
char color;
char data;
int i;
node( char a= '0', char b= '0',int c=0 ):
color(a), data(b),i(c) {};
friend bool operator <(const node &a,const node &b)
{
return a.i>b.i;
}
};
char s[2];
char ans [105][3];
priority_queue<node> q[13];
int main()
{
int n;
cin >> n;
for(int i=0;i<n;i++)
{
scanf("%s",s);
char a=s[0];char b=s[1];
q[b-'0'-1].push(node(a,b,i));
}
int j=0;
for(int i=0;i<9;i++)
{
printf("Queue%d:",i+1);
int flag=1;
while(!q[i].empty())
{
if(flag==1)
{
printf("%c%c",q[i].top().color,q[i].top().data);
flag=0;
}
else
{
printf(" %c%c",q[i].top().color,q[i].top().data);
}
char a= q[i].top().color;char b=q[i].top().data;
q[a-'A'+9].push(node(a,b,j++));
q[i].pop();
}
printf("\n");
}
j=0;
for(int i=9;i<13;i++)
{
printf("Queue%c:",'A'+i-9);
int flag=1;
while(!q[i].empty())
{
if(flag)
{
printf("%c%c",q[i].top().color,q[i].top().data);
flag=0;
}
else
printf(" %c%c",q[i].top().color,q[i].top().data);
ans[j][0]=q[i].top().color;
ans[j][3]='\0';
ans[j++][1]=q[i].top().data;
q[i].pop();
}
cout <<endl;
}
for(int i=0;i<j;i++)
{
if(i==0)
cout<<ans[i];
else
cout << ' '<<ans[i];
}
cout << endl;
return 0;
}
相关文章推荐
- 堆排序的应用-优先级队列
- 堆排序的应用之优先级队列的实现
- 堆的实现及应用(优先级队列,堆排,TopK问题)
- 1:用队列对扑克牌排序
- 优先级队列学习及应用
- 堆(优先级队列) 的应用
- 优先级队列几个应用详解(friend bool operator)
- 用队列对扑克牌排序
- 优先级队列的简单实现及STL举例应用
- 堆排序应用之优先队列的实现
- 优先级队列的应用-----迪杰斯特拉算法
- Uva11997 优先级队列的应用 多路合并问题
- [数据结构]用插入排序和选择排序的思想实现优先级队列
- java中自己用过的数据结构(队列Queue、优先级队列PriorityQueue和栈Stack),及其分别的应用场景
- 数据结构—堆排序及其应用(优先级队列)
- vector结构体排序与priority优先级队列自动排序对比
- C++ 标准模板库STL 优先级队列 priority_queue 使用方法与应用介绍(一)
- 算法导论:堆排序的应用---优先级队列
- POJ——用队列对扑克牌排序(AC)
- vector结构体排序与priority优先级队列自动排序对比