找出导致总数小于或等于阈值的三元组数量的代码给出了错误的输出

时间:2018-11-02 06:43:37

标签: c++

我正在解决C ++编码问题,遇到了一个问题“在以下两个条件下查找三元组的数量-求和等于给定的阈值(阈值是整数),三元组应为{{ 1}},其中a[i]<a[j]<a[k]是数组,a,'j','k'是数组的索引(出于说明目的)。 我做了什么-

i

我的输出应提供此类三胞胎的数量,但我的输出为0。例如,我的输入是7(阈值),然后是1,2,4,6(向量元素),我的输出应该是1,因为有一个这样的三元组(1,2,4)加起来等于或小于给定的阈值,但表示为0

在许多其他StackOverflow成员的帮助下,最终的工作代码如下

 #include <cmath>
 #include <cstdio>
 #include <vector>
 #include <iostream>
 #include <algorithm>
 using namespace std;

 int threeSum(vector<int>& nums, int threshold); //function declaration

int main() {
int result, threshold;
cin>>threshold; //entered by user
vector<int> nums; //array which contains values
for(int m = 0 ; m< nums.size() ; m++)
    nums.push_back(m);
result = threeSum(nums, threshold);
cout<<result;
return 0;
}

int threeSum(vector<int>& nums, int threshold) {
   // vector<vector<int>> result;
    int count = 0, threshold;  
    if(nums.empty() || nums.size()<=2)
        return 0;
    sort(nums.begin(), nums.end());
    for (int i = 0; i < nums.size() - 2; i++) {
        int a = nums[i];
        if(a > threshold) break;
        if (i > 0 && a == nums[i - 1]) continue;
        for (long j = i + 1, k = nums.size() - 1; j < k;) {
            int b = nums[j];
            int c = nums[k];
            int value = a + b + c;
            if (value <= threshold) {
                count++;
                while (j<k && b == nums[++j]);
                while (j < k &&c == nums[--k]);
            } else if (value > 0) {
                k--;
            } else {
                j++;
            }
        }
    }
    return count;
}

2 个答案:

答案 0 :(得分:2)

每个num元素都等于零。

一个= nums [i]等于零。

因此,将for循环留在

if(a > 0) break;

也许应该是

if(a > threshold) break;

答案 1 :(得分:1)

最初的问题是(您的编译器应该警告您-请研究如何进行设置,或者,如果您忽略了它,请以后再不要忽略它)import React from 'react'; import 'materialize-css'; import 'materialize-css/dist/css/materialize.min.css'; import Pic1 from '../img/Pic1.jpg' import Pic2 from '../img/Pic2.jpg'; import 'materialize-css/js/parallax'; const About = () => { return ( <div className="paralax"> <div className="parallax-container"> <div className="parallax"><img src={Pic1} alt="Building"/></div> </div> <div className="class section white"> <div className="row container"> <h2 className="header">Parallax</h2> <p className="grey-text text-darken-3 ligthen-3"> Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling. </p> </div> </div> <div className="parallax-container"> <div className="parallax"><img src={Pic2} alt="Building"/></div> </div> </div> ) } export default About; 中的threshold }完全没有初始化。尝试以下方法:

threeSum()

result = threeSum(nums,threshold);

我让你解决其他细节!