您的位置:首页 > 大数据 > 人工智能

629. K Inverse Pairs Array

2017-07-04 14:27 197 查看
参考答案:点击打开链接
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
[k];
}
};



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode C++ 动态规划