cout <<“”;正在改变我的答案,用C ++

时间:2020-07-21 10:02:16

标签: c++ cout

我正在尝试解决一些ds问题,所有的事情在算法上都是好的,但回答是明智的(错误的),然后进行调试,我将cout放在检查cout答案正确的地方,以检查哪里出错了,但是没有答案是错误的 另外,其他在线编译器也显示了正确答案

没有提示并且是1:7:4(错误的答案) 答案是1:7:3(正确的答案) 输入是 2 9 1 0 1 1 0 1 1 1 1 0 0 0 1 0 1 0 0 1

 #include <bits/stdc++.h>
 using namespace std; 
 int main()
 {
int n,m;
int a,b;
int ans=0; 
int ansij=INT_MAX;
  cin>>n>>m;
  int arr[n+10][m+10]; 
  for(int i=0;i<n;i++)
  {
  { for(int j=0;j<m;j++) 
    cin>>arr[i][j];
   }
  }
  
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++) 
  { if(i==0&&j==0)
    continue; 
    int score=0;
    if(arr[i][j]==1)
    { //cout<<arr[i][j]<<endl ;
      //1
     if(arr[i+1][j]==1)      
     score++;
     //2
     
     if(arr[i][j+1]==1)
      score++;
      //3
      if(arr[i-1][j]==1)      
     score++;
     //4
     if(arr[i][j-1]==1)
      score++;
      //5
      if(arr[i+1][j+1]==1)      
     score++;
     //6
     if(arr[i+1][j-1]==1)
      score++;
      //7
    if(arr[i-1][j+1]==1)      
     score++;
     //8
     if(arr[i-1][j-1]==1)
      score++;
    }
//cout<<"";
//cout<<"score of i and j is ("<<i+1<<","<<j+1<<") "<<score<<endl;

if(ans<score)
{ ans=score; 
  ansij=i+j;
  a=i;
  b=j;
//cout<<" answer update from gretest"<<endl;
    
}
else if(ans==score)
{ if(ansij>=(i+j))
{ ans=score;
  ansij=i+j;
  a=i;
  b=j;
//cout<<" answer update from qual"<<endl;
}
}
//cout<<" answer in i j is"<<ans<<endl;
}
}  
cout<<a+1<<":"<<b+1<<":"<<ans;   
  
  return 0;
}

1 个答案:

答案 0 :(得分:2)

“ cout”不是问题。

我已经使用您给定的值初始化了一个矩阵,并且已经从键盘读取了值n=2m=9

int arr[n+10][m+10]{1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1};

和cout打印1:7:3(您说的应该是正确的答案)。

这意味着您的问题在于读取矩阵。

相关问题