帮忙找错酷酷酷

C. 友好数对

Problem ID: 8152

Contest ID: 5322

必做题

Wrong Answer

题目描述:

读入一个n*m的矩阵,定义两个数是友好的,当且仅当他们位置相邻(上下左右)且值相同。求友好数对个数。

输入格式:

第一行两个整数n,m

之后n行,每行m个0到100间的整数

输出格式:

一个整数,表示答案。

样例输入1:

5 4

3 3 3 4

2 0 0 3

0 3 1 4

3 4 3 3

1 0 3 3

样例输出1:

7

约定:

1<=n,m<=500

#include<bits/stdc++.h>
using namespace std;
int main (){
	int n,m,cnt=0;
    cin>>n>>m;
    int a[n][m]; 
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
			cin>>a[i][j]; 
                
            
	    }
	}
	for(int i=1;i<n;i++){
        for(int j=1;j<m;j++){
			if(a[i][j]==a[i-1][j]||a[i][j]==a[i+1][j]||a[i][j]==a[i][j+1]||a[i][j]==a[i][j-1]){
                cnt++;
            }
		}
	}
	cout<<cnt<<endl;
	return 0;
}

wa0

帮你看了一下
你输入的是i=0,j=0
但是你处理的时候是i=1,j=1
这会导致一个问题
有可能 (0,0)和(0,1)的数互为友好数
但是由于你是从(1,1)开始处理,
就不会判断到(0,0)和(0,1)或者(0,0)和(1,0)
所以你可以在循环前
先判断一下
a[0][0]是否等于a[0][1]
a[0][0]是否等于a[1][0]
应该就可以了

谢了