2022年6月9日 星期四

[826] Most Profit Assigning Work (TBD)

感覺是對的, 但是會超過時間?!
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 好了(逃)

沒有留言:

張貼留言