日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学生舞池分配问题

發布時間:2024/3/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学生舞池分配问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】
一班有m個女生,有n個男生(m不等于n),現要開一個舞會。男女生分別編號坐在舞池的兩邊的椅子上。每曲開始時,依次從男生和女生中各出一人配對跳舞,本曲沒成功配對者坐著等待下一曲找舞伴。
【基本要求】
請設計一系統模擬動態地顯示出上述過程,要求如下:
(1)輸出每曲配對情況;
(2)計算出任何一個男生(編號為X)和任意女生(編號為Y),在第K曲配對跳舞的情況.至少求出K的兩個值;
(3)盡量設計出多種算法及程序。

【算法思想】
用循環隊列來解決,入隊和出隊可分別對應男女各自配對并重新回到座位上。

#include"pch.h" #include <iostream> using namespace std;template <class T> class seqQueue { private:T*data;int maxSize;int front; //隊頭指針int rear; //隊尾指針 public:seqQueue(int initsize);~seqQueue() //定義析構函數,使對象在撤銷時釋放{front = rear = 0;delete[]data;}void thefrist();void enQueue(T x);void deQueue(T&x); }; template<class T> seqQueue<T>::seqQueue(int initsize) { //創建隊列data = new T[initsize];maxSize = initsize;front = rear = 0;}template<class T> void seqQueue<T>:: thefrist() //隊列的聲明 {for (int i = 0; i < maxSize - 1; i++)enQueue(i); } template<class T> void seqQueue<T>:: enQueue(T x) { //入隊data[rear] = x;rear = (rear + 1) % maxSize; }template <class T> void seqQueue<T>:: deQueue(T &x) { //出隊x = data[front];front = (front + 1) % maxSize;}void thefrist(seqQueue<int> & a, int m); void exchange(int, int); void start(int, int); static int b = 0, g = 0; int song = 0;int main() {int b_2 = 0, g_2 = 0;cout << "請依次輸入男女生人數:" << endl;cin >> b >> g;start(b, g);cout << "請輸入男生和女生的編號:";cin >> b_2 >> g_2;while ((b_2 > b) || (g_2 > g)) //如果輸入錯誤{cout << "輸入的編號過大,請重新輸入:";cin >> b_2 >> g_2;}exchange(b_2, g_2);cout << "是否繼續(是請輸入'y',否則請輸入'n'):"; }void thefrist(seqQueue<int> &Q, int m) //初始化隊列 {for (int i = 1; i <= m; i++)Q.enQueue(i); }void start(int b, int g) {seqQueue<int> man(b + 1);seqQueue<int>woman(g + 1); //創建男女兩個隊列thefrist(man, b);thefrist(woman, g);cout << "請輸入將要播放的曲目數\n";cin >> song;cout << "配對情況如下:\n";for (int i = 1; i <= song; i++){int x, y;man.deQueue(x);woman.deQueue(y);cout << "第" << i << "首曲子:" << x << "號男生>>>>" << y << "號女生" << endl;man.enQueue(x);woman.enQueue(y);} }void exchange(int b_2, int g_2) {int f = 0;seqQueue<int>man2(b + 1);seqQueue<int>woman2(g + 1);thefrist(man2, b);thefrist(woman2, g);while (f <= song){int x, y;f++;man2.deQueue(x);woman2.deQueue(y);man2.enQueue(x);woman2.enQueue(y);if ((x == b_2) && (y == g_2)){cout << "第" << f << "首曲:\t" << x << "號男生<->" << y << "號女生" << endl;}}if (f == song)cout << "他們在這個舞會上不可能在一起跳舞" << endl; }

總結

以上是生活随笔為你收集整理的学生舞池分配问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。