int maxProfitAssignment(int* difficulty, int difficultySize, int* profit, int profitSize, int* worker, int workerSize){
int earn[profitSize];
int i,maxWP=0;
int ret_profit=0;
for(int widx=0;widx<workerSize;widx++)
{
maxWP=0;
for (int i=0;i<profitSize;i++)
{
if (worker[widx] >= difficulty[i])
if (profit[i] > maxWP)
maxWP= profit[i];
}
ret_profit +=maxWP;
}
return ret_profit;
}
後來想說要偷吃步, 因為想必要經過sorting , 而sorting 又要把難度跟profit 綁在一起而只看難度sorting , 覺得想偷懶於是就開一個上限的10001個array, 把index 當做難度, 存profit 進去, 覺得應該會比較快, 誰知竟然沒有XDDDD!!!!
另一個問題是難度可能會重覆!!!這樣存的profit 就需要取大的才可以
真是陷阱啊處處都要小心><
int maxProfitAssignment(int* difficulty, int difficultySize, int* profit, int profitSize, int* worker, int workerSize){
int earn[profitSize];
int i,maxWP=0;
int ret_profit=0;
int diff[100000]={0,};
for(i=0;i<difficultySize;i++)
{
if (diff[difficulty[i]-1]==0)
diff[difficulty[i]-1] = profit[i];
else if (diff[difficulty[i]-1] < profit[i])
diff[difficulty[i]-1] = profit[i];
}
for(int widx=0;widx<workerSize;widx++)
{
maxWP=0;
for (i=0;i<worker[widx];i++)
{
if(diff[i] >=maxWP)
maxWP = diff[i];
}
ret_profit +=maxWP;
}
return ret_profit;
}
其實看起來差不多(XD) 但因為今天忘記帶筆電充電線了(哭) 那就下次再寫sorting 好了(逃)
沒有留言:
張貼留言