300個學生
實現乙個智慧型自動分配演算法,根據輸入資訊,輸出部門和學生間的匹配資訊(乙個學生可以確認多個他所申請的部門,乙個部門可以分配少於等於其要求的學生數的學生) 及 未被分配到學生的部門 和 未被部門選中的學生。
考慮的因素——學生
學生空閒時間設定
學生興趣:乙個學生可以有[2,4]個興趣愛好
學生意願部門:對於學生意願部門而言,不可以出現多個意願部門的活動時間發生衝突的情形
程式原理
string hobbies[15] = ;
string date[7] = ;
string hour[15] = ;
說實話debug是個非常痛苦的過程,在輸出結果的時候,意外發現這string用json輸出的字串好像非常不友好,竟然用queue彈出的string會出現字串的字首為空串標識,搞到最後我還是只能去修改部分queue資料型別成vector。
關於更多痛苦的debug過程請看後文。。
流程圖
實現**
// 函式:預選部員
void match::select(student *s, department *d, int stu_num, int dep_num)
s[i].dep.pop();}}
}// 函式:返回優先等級
int match::priority(vector &v1, vector &v2)}}
return p_num;
}// 函式:學生選部門時的優先順序設定 數值越小越優先
int match::priority(student *s, department *d)
if (flag & 2) // 興趣優先
if (flag & 4) // 時間優先
return p_num + s->state * 1000; // 優先還未選中部門的學生
}// 函式:sort重新定義排序方式
bool cmp(const vector &a, const vector &b)
// 函式:新增部員
void match::depaddstu(student *s, department *d, int dep_num)
d[i].stu.clear(); // 清空該部門的部員預選表}}
}
這次結對作業雙方對編碼做了些規範:每個獨立功能使用乙個函式
類名首字母發洩
函式名使用小寫
變數名大小寫混搭,盡可能表達清楚變數的意義
**使用注釋,應該說使用大量的注釋,這個非常重要,既為了自己debug方便,也為了搭檔閱讀方便
輸入優先條件
匹配學生個數
未匹配學生個數
實際耗時
輸出檔案路徑1績點
24357
0.449
output_condition1.txt2興趣
25545
0.481
output_condition2.txt
3績點+興趣
24258
0.503
output_condition3.txt4時間
25743
0.486
output_condition4.txt
5績點+時間
24357
0.595
output_condition5.txt
6興趣+時間
25050
0.573
output_condition6.txt
7績點+興趣+時間
24357
0.623
output_condition7.txt2興趣
1272
1728
0.912
output_condition8.txt2興趣
3776
1224
1.096
output_condition9.txt
第二次結對作業
這個作業屬於哪個課程 王永樂211706201 洪萬真211714312 這個作業要求在 homework 10417 這個作業的目標 作業正文 如下其他參考文獻 我是計算機工程系計科二班王永樂,我的隊友是來自計科一班的洪萬真 從圖中可以看出,直播的方式更讓學生們感到適合,當然,兩種方式各有利弊 因...
第二次結對作業
這個作業屬於哪個課程 軟體工程 福州大學至誠學院 計算機工程系 隊員1211706164 陳德渠 隊員2211706162 蔡澤華 這個作業要求在 第二次結對作業 這個作業的目標 資料視覺化與原型設計 作業正文 正文其他參考文獻 無由於第一次結對時,我們都是第一次開展問卷調查,導致問題的關聯性與實用...
第二次結對作業
這個作業屬於哪個課程 班級的鏈結 馬駿211706121 林連坤211706187 這個作業要求在 第二次結對作業 這個作業的目標 圍繞福州大學至誠學院 停課不停教 停課不停學 的具體實踐,了解網課的授課情況,同學們的學習 情況等等,並採用資料視覺化的方式進行呈現 作業正文 連坤 第二次結隊作業。我...