如果先做预处理将每层的取j个的最优情况 放在vector<vector<int>>value;中, value[i][j]代表在第i层取j个的最优解,做出这样的二维数组,时间复杂度是O(100*10000);每一层是O(10000),最多100层, 然后可以用动态规划。 dp[i][j] 表示到第i层,取j个,的最优解, 那么dp[i][j]等于,dp[i-1][j-x]+value[i][x];x是0->j;就是前面用0个,这层用j个,前面用1个这层用j-1个。。。的最优解, 然后时间复杂度是 O(100*100*100),第一个是一共100层,第二个是 j最多取道100个,第三个是从 0-j,1-j-1...j-0;一共比较100次。 所以最后的时间复杂度是O(1百万); 欢迎指正。
点赞 3
牛客网
牛客企业服务