سه عنصر متوالی که بیشترین مجموع را دارند - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

سه عنصر متوالی که بیشترین مجموع را دارند

0 امتیاز
آرایه ای با n عضو در نظر بگیرید ، برنامه ای بنویسید که مکان سه عنصر متوالی که بیشترین مجموع را
دارند بیابد . (آرایه را از ورودی دریافت کنید)
سوال شده خرداد 7, 1399  بوسیله ی ariyaee (امتیاز 14)   2 3
ویرایش شده خرداد 7, 1399 بوسیله ی BlueBlade
دقیقاً الآن مشکلتون با کدوم قسمت هست ؟
کلا نمیتونم حل کنم

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

به دو روش توابع test1 و test2


#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
void test1(){
   std::vector<int> arr={0,1,2,3,4,5,6,7,8,9} ;
   std::vector<int> sigma;
    int kernel_size = 3;
    for (int i=0;i <= arr.size() - kernel_size;i++){
       int sum = 0;
       for (int j=i;j < i + kernel_size;j++)
          sum += arr[j];
       sigma.push_back(sum);
    }
    auto pos = std::max_element(sigma.begin(),sigma.end());
    if (pos != sigma.end())
       cout << std::distance(sigma.begin(),pos)+(kernel_size/2);
       
    
           
          
}

void test2(){
    std::vector<int> arr={0,1,2,3,4,5,6,7,8,9} ;
   std::vector<int> sigma;
    int kernel_size = 3;
    for (int i=0;i <= arr.size() - kernel_size;i++){
       int sum = std::accumulate(arr.begin()+i, arr.begin()+i+3, 0);
       sigma.push_back(sum);
    }
    auto pos = std::max_element(sigma.begin(),sigma.end());
    if (pos != sigma.end())
       cout << std::distance(sigma.begin(),pos)+(kernel_size/2);
    //
}
int main()
{
    //test1();
    test2();

    return 0;
}

 

پاسخ داده شده خرداد 8, 1399 بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
انتخاب شد خرداد 8, 1399 بوسیله ی ariyaee
این کد رو اجرا میکنم خیلی جاها خطا میزنه خروجی نمیده بهم

اینحا تست کردم درست بود.

...