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...