リートコード1049。最後の石の重さII(39日目)----動的計画法の学習期間(眉ペンシルではバグの提出に失敗しました)

元のタイトル

ここに画像の説明を挿入



コードの実装(最初のブラシの自己解決)

int cmp(const void* a,const void* b)
{
    
    
    return *(int*)a - *(int*)b;
}

int lastStoneWeightII(int* stones, int stonesSize){
    
    
    int i,j,sum = 0,min = INT_MAX-1;
    for(i=0;i<stonesSize;i++)
        sum += stones[i];
    int scale = sum/2+1;
    int dp[31][10000];
    qsort(stones,stonesSize,sizeof(int),cmp);
    for(i=0;i<stonesSize;i++)
    {
    
    
        for(j=1;j<=scale;j++)
        {
    
    
            if(j == stones[i] || (i>=1 && dp[i-1][j]))
            {
    
    
                dp[i][j] = 1;
                if(fabs(sum - j - j) < min) min = fabs(sum - j - j);
            }
            if(i>=1 && dp[i-1][j] && j+stones[i] <=scale)
            {
    
    
                dp[i][j+stones[i]] = 1;
                if(fabs(sum - j - stones[i] - j - stones[i]) < min) min = fabs(sum - j - stones[i] - j - stones[i]);
            }
        }
    }
    return min;
}

おすすめ

転載: blog.csdn.net/qq_37500516/article/details/113696525