第二次結對程式設計作業 畢設導師智慧型匹配

2022-07-26 16:36:11 字數 2466 閱讀 8553

031402337 胡心穎

031402341 王婷婷

編碼實現乙個畢設導師的智慧型匹配的程式。

提供輸入包括:30個老師(包含帶學生數的要求的上限,單個數值,在[0,8]內),100個學生(包含績點資訊),每個學生有5個導師志願(志願的導師可以重複但不能空缺)。

實現乙個智慧型自動分配演算法,根據輸入資訊,輸出導師和學生間的匹配資訊(乙個學生只能有乙個確認導師,乙個導師可以帶少於等於其要求的學生數的學生) 及 未被分配到學生的導師 和 未被導師選中的學生。

演算法思想為採用貪心思想;

簡單來說,首先將學生按照績點從高到低排序,優先分配績點高的學生;

然後針對每個學生,首先過濾掉其重複選擇的導師,然後按照權重值teacher[i].qz(後面介紹)高低來分配導師,權重值相同的情況下按照學生志願排序;

teacher[i]表編號為i的導師,teacher[i].left表示該導師剩餘學生數,teacher[i].want表示選擇了該導師的學生總數,teacher[i].qz表示teacher[i]導師對於該學生的權重值(在本演算法中可認為是匹配程度,越大越匹配)

teacher[i].qz =teacher[i].left/teacher[i].want

對於每個學生的五個志願導師,都計算出其對應的權重值,按照權重值高的分配,如果有多個權重值相同,那麼則按照志願順序分配;

從權重值計算公式可以看出,teacher[i].left越大,teacher[i].want越少,代表導師剩餘數越多和導師越冷門來分配,在符合學生志願的情況下,使得大多數學生都能分配到導師;

權重值相同時按照志願順序來分配,使得學生都能選擇到自己較喜愛的導師

struct student // 學生結構體

stu[110];

struct teacher //老師結構體

teacher[50];···

srand(time(0));

for(int i=0;i<30;i++)//導師隨機資料

for(int i=0;i<100;i++)//學生隨機資料

使用srand()函式創造隨機數;

導師隨機生成想要的學生個數,將隨機數模9,使得資料範圍在 0-8 之間;

學生隨機生成績點以及想要的導師編號,績點控制在1-5之間,導師編號在0-29之間

for(int i=0;i<30;i++)//計算導師權重

teacher[i]表編號為i的導師,teacher[i].left表示該導師剩餘學生數,teacher[i].want表示選擇了該導師的學生總數;

如果導師想要的學生數為0 ,則直接將teacher[i].qz(權重值)設為-1,

否則權重值teacher[i].qz=teacher[i].left/teacher[i].want

bool cmp(student a,student b)//學生按照績點的高到低排序

將學生按照績點的高到低排序

sort(stu,stu+100,cmp);//學生排序

for(int i=0;i<100;i++)

{ double now;

int ans;

now=0;

ans=-1;

for(int j=0;j<5;j++)

{ if(now先將學生按照績點初步排序,在通過權重值和志願順序來分配

使用srand()函式創造隨機數;

導師編號從0至29,後面緊跟導師想要的學生數從0到8

學生編號從0至99,後面緊跟其績點 從1.00到5.00,再接著就是五個志願導師

經過匹配之後的結果:

首先輸出沒有匹配的導師以及沒有匹配的學生,

緊接著按照導師序號來輸出每個導師的匹配學生情況

專案說明:readme.md

分配導師:a.cpp

第二次結對程式設計 畢設導師智慧型分配

張建明 黃偉煒 編碼實現乙個畢設導師的智慧型匹配的程式。提供輸入包括 30個老師 包含帶學生數的要求的上限,單個數值,在 0,8 內 100個學生 包含績點資訊 每個學生有5個導師志願 志願的導師可以重複但不能空缺 實現乙個智慧型自動分配演算法,根據輸入資訊,輸出導師和學生間的匹配資訊 乙個學生只能...

第二次結對程式設計作業 畢業導師智慧型匹配

結對程式設計人員 031402418汪培僑031402618林宇晨 編碼實現乙個畢設導師的智慧型匹配的程式。提供輸入包括 30個老師 包含帶學生數的要求的上限,單個數值,在 0,8 內 100個學生 包含績點資訊 每個學生有5個導師志願 志願的導師可以重複但不能空缺 實現乙個智慧型自動分配演算法,根...

第二次結對程式設計作業

組員部落格鏈結 本作業部落格鏈結 github倉庫 共同解決互動 api 部落格 psp2.1 personal softwareprocess stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫200 250 estimate 估計這個任務需要多少時間 250300 develo...