首页 > 解决方案 > 在我的 cpp 程序中保留/删除冗余 cout 会改变我的答案

问题描述

#include <iostream>
using namespace std;
int main(){
     int t;
     cin >> t;
     while(t-->0){
          int n;
          int a[n];
          int max=0;
          cin >> n;
          for(int i=0; i<n; i++){
               cin >> a[i];
          }
          max=a[0]+a[1]+a[2];
          for(int i=3; i<n; i++){
               if((a[i]+a[i-1]+a[i-2])>max){
                    max=a[i]+a[i-1]+a[i-2];
               }
          }
        //   cout << "max = " << max << endl;
          if((a[n-1]+a[n-2]+a[0])>max)
          {
               max=(a[n-1]+a[n-2]+a[0]);
          }
          if((a[n-1]+a[1]+a[0])>max)
          {
               max=(a[n-1]+a[1]+a[0]);
          }
          cout << max <<endl;
     }
     return 0;
}

这是一个针对此问题的简单 cpp 程序:https ://www.codechef.com/COG2020/problems/COG2002# 。当我添加一个重复的打印语句时,它会给出正确的答案。当我删除它时,我得到一个错误的答案。我的输入是:2 3 1 2 2 3 1 2 2

请说出可能的原因。我在谷歌上搜索了任何解释,但找不到任何解释:(

标签: c++

解决方案


推荐阅读