萌新刚学到循环队列,不是特别懂,敢问大佬们这样写为何不行,还有是否有其它的好...
#include<iostream>using namespace std;
class CirQueue
{
private:
int data;
int front,rear;
public:
CirQueue()
{
front=rear=0;
}
void EnQueue(int x,int n)
{
rear=(rear+1)%n;
data=x;
}
void GetQueue(int n)
{
front=(front+1)%n;
if(n%2==0)
{
while(n==0)
{
while(data%2==1)
{
front = (front+1)%n;
}
cout<<"man"<<data<<"-";
n--;
while(data%2==0)
{
front = (front +1)%n;
}
cout<<"woman"<<data;
n--;
continue;
}
cout<<endl;
}
else
{
while(n==1)
{
while(data%2==1)
{
front = (front+1)%n;
}
cout<<"man"<<data<<"-";
n--;
while(data%2==0)
{
front = (front +1)%n;
}
cout<<"woman"<<data;
n--;
cout<<endl;
}
cout<<endl;
}
}
};
int main()
{
int n;
int a;
while(cin>>n)
{
CirQueue Q;
for(int i=0;i<n;i++)
{
cin>>a;
Q.EnQueue(a,n);
}
Q.GetQueue(n);
}
return 0;
} 这是题目:
Problem Description:
前些日子是玛丽的21岁生日,她在家里开了一个舞会并且邀请了很多男男女女的朋友,然后大家提议用随机配对的方法找舞伴。即给每一位想跳舞的朋友一个随机的号码(男的给奇数号,女的给偶数号),男女生分别排成两队。舞会开始时。依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者则在旁边看别人跳舞。现在你用链队列的方法编写一个能实现该配对的程序。
Input:
有多组数据,每组先输入一个整数n,代表有n个想跳舞的朋友。然后再输入n个整数,代表每个朋友的编号(奇数号代表男生,偶数号代表女生)。
Output:
输出每对男女的编号。每组后面有一空行。
Sample Input:
3 41 67 34
4 1 69 24 78
5 58 62 64 5 45
Sample Output:
man41-woman34
man1-woman24
man69-woman78
man5-woman58
man45-woman62
页:
[1]