我正在尝试解决一些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;
}
答案 0 :(得分:2)
“ cout”不是问题。
我已经使用您给定的值初始化了一个矩阵,并且已经从键盘读取了值n=2
和m=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
(您说的应该是正确的答案)。
这意味着您的问题在于读取矩阵。