629. K Inverse Pairs Array

来源:互联网 发布:刘博洋 知乎 编辑:程序博客网 时间:2024/06/05 06:03
参考答案:点击打开链接
class Solution {public:    int kInversePairs(int n, int k) {        //if(n<=0) return;           int dp[n+1][k+1];        int mod = 1000000007;
        memset(dp,0,sizeof(dp));                for(int i = 1 ; i <= n ;i++){            dp[i][0] = 1 ;        }        for(int i = 1 ; i <= n ; i++){
        //j是不能超过k,和最大可能的逆序数二者中最小的的            for(int j = 1 ; j <=min(k, ((1+i-1)*(i-1)/2)) ;j++){                if(j>=i){
     //减去的是dp[i-1][j-i]                     dp[i][j] = (dp[i][j-1] + dp[i-1][j] - dp[i-1][j-i])%mod;                     dp[i][j]=(dp[i][j-1]-dp[i-1][j-i])<0?(dp[i][j]+mod)%mod:dp[i][j];                }                else{                     dp[i][j] =(dp[i][j-1] + dp[i-1][j])%mod ;                }                        }        }        return dp[n][k];    }};
 
原创粉丝点击