李開復 工場很忙 的問題解答

2021-06-09 11:11:45 字數 2174 閱讀 6354

思想:面試輪數少的先安排面試。

1.建立學生陣列stu[m],每個陣列元素帶有乙個指標,指向其要參與面試的專案,指標初始化為null

2.讀入資料,為每個學生新增要參與面試的專案號,表示專案的節點被新增到學生節點的專案指標中組成鍊錶

3.建立乙個陣列表示面試安排表table[m+1][n+1](第0行和第0列空置不用),table[i][j]表示第i個學生參加第j個專案面試被安排在第table[i][j]輪,所有陣列元素初始化為0 ;

4.找到參與專案面試輪數最少的學生i,從i要參與面試的專案中找出參與面試的人數最少的專案j

5.填面試安排表,在table[i][j]處填入該元素所在行和列都沒出現過的最小正整數。

6.從學生i的專案鍊錶中刪除專案j,如果任一學生的專案鍊錶非空,重複步驟4---步驟6.

5.建立最終結果陣列resulttable[n+1][m+1],resulttable[i][j]表示第i個專案在第j輪面試第resulttable[i][j]個學生,把填好的**table[m+1][n+1]依次整理到resulttable中,方法為resulttable[j][table[i][j]]=i;

#include

#define m 3 //學生數

#define n 3 //專案數

/*改進:

1.合法性判斷:判斷是否有學生沒有參加專案或者參加了3個以上的專案

2.學生參與專案數可以在學生的結構體中用count體現

*/static int stu_occur[m+1],pri_occur[n+1],table[m+1][n+1];

typedef struct prjnode

prjnode;

typedef struct stunode

stunode;

void initial()

void addprjtostu(stunode *stu,int i)            //為每個學生新增要參與面試的專案

else

}void filltable(int x,int y)

void delprj(stunode *stu,int i)

if(pprj==(*stu).next)

(*stu).next=pprj->next;

else

ptmp->next=pprj->next;

free(pprj);

}void main()

filltable(xmin,ymin);            //填表函式,確定面試順序

delprj(&stu[xmin-1],ymin);       //刪除函式,刪除學生專案練表中已經安排面試的專案

stu_occur[xmin]--;               //學生待參與面試的專案數減一

pri_occur[ymin]--;               //參與面試的學生數減一

}///*

printf("面試安排**式1:a[i][j]表示第i個學生參加第j個專案面試的次序為a[i][j]\n");

for(i=1;i<=m;i++)

printf("\n");

}//*/

for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

resulttable[i][j]=0;

max=table[1][1];

for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

if(table[i][j]!=0)

printf("面試安排**式2:a[i][j]表示第i個專案在第j輪面試第a[i][j]個學生\n");

for(i=1;i<=n;i++)

printf("\n");

}if((fwp=fopen("iw.out","w+"))==null)

else

fprintf(fwp,"\n");

}printf("結果已按照格式2寫入iw.out,可用記事本開啟檢視\n");

};free(a);

}}//tag1

}

工場很忙 的問題

題目見後文,李開復微博看到的。好久沒做演算法題了,興致來了就嘗試下。下面是我的演算法思想,應該叫貪心法,求拍磚!1 用二維表表示同學選擇專案的情況,統計第位同學選擇專案的數量並以降序排序 2 用二維表儲存安排結果,縱座標表示專案,橫座標表示某時間安排的同學,初始全為0 3 優先安排選擇專案多的同學,...

gridview問題解答

這樣寫 printisopen convert.toboolean datebinder.eval container.dataitem,isopen cs 是這樣的 public string printisopen bool bisopen else return strhhtml 或者說是這樣...

gridview問題解答

這樣寫 printisopen convert.toboolean datebinder.eval container.dataitem,isopen cs 是這樣的 public string printisopen bool bisopen else return strhhtml 或者說是這樣...