【TFLSnoi李志帅】第一篇文章
1332:【例2-1】周末舞会————信息学奥赛一本通 |
满分代码,可以直接抄
讲文明,守诚信,共创和谐环境
【题目描述】
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。
【输入】
第一行两队的人数;
第二行舞曲的数目。
【输出】
配对情况。
【输入样例】
4 6 7
【输出样例】
1 1 2 2 3 3 4 4 1 5 2 6 3 1
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
代码:
1 #include <bits/stdc++.h> 2 using namespace std; 3 long long a[1005];//定义队列a表示男士队伍,由于本代码没有使用循环队列,所以要把数组开大写,足够它浪费 4 int front=0,rear=0; 5 void push(int x) 6 { 7 a[++rear]=x; 8 } 9 void pop () 10 { 11 front++; 12 } 13 bool empty() 14 { 15 return rear==front ?1:0; 16 } 17 int top() 18 { 19 return a[front+1]; 20 } 21 int size() 22 { 23 return rear-front; 24 } 25 int main() 26 { 27 int k,n,m,j; 28 cin>>m>>n>>k; 29 for(int i=1;i<=m;i++) 30 { 31 push(i); 32 } 33 int i=0;//定义计数器记录舞会曲数 34 for(j=1;j<=n;j++) 35 { 36 cout<<top()<<" "<<j<<endl;//打印出队首男士与女士的编号 37 push(top());//曲终,男士排到队尾等待 38 pop(); 39 i++;//下一首舞曲 40 if(i==k)break;//判断 41 if(j==n)j=0;//因为每轮循环都要j++,所以要使下一轮循环j==1,就要把j归零; 42 } 43 return 0; 44 }
萌新上路,不喜勿喷哦,感谢