欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 连连看(dfs)

连连看(dfs)

2025/3/31 13:54:22 来源:https://blog.csdn.net/Very_a/article/details/146570044  浏览:    关键词:连连看(dfs)

问题描述

小蓝正在和朋友们玩一种新的连连看游戏。在一个 n×mn×m 的矩形网格中,每个格子中都有一个整数,第 ii 行第 jj 列上的整数为 Ai,jAi,j​ 。玩家需要在这个网格中寻找一对格子 (a,b)−(c,d)(a,b)−(c,d) 使得这两个格子中的整数 Aa,bAa,b​ 和 Ac,dAc,d​ 相等,且它们的位置满足 ∣a−c∣=∣b−d∣>0∣a−c∣=∣b−d∣>0 。请问在这个 n×mn×m 的矩形网格中有多少对这样的格子满足条件。

输入格式

输入的第一行包含两个正整数 n,mn,m,用一个空格分隔。

接下来 nn 行,第 ii 行包含 mm 个正整数 Ai,1,Ai,2,⋯,Ai,mAi,1​,Ai,2​,⋯,Ai,m​,相邻整数之间使用一个空格分隔。

输出格式

输出一行包含一个整数表示答案。

样例输入

3 2
1 2
2 3
3 2

样例输出

6

样例说明

一共有以下 66 对格子:(1,2)−(2,1)(1,2)−(2,1),(2,2)−(3,1)(2,2)−(3,1),(2,1)−(3,2)(2,1)−(3,2),(2,1)−(1,2)(2,1)−(1,2),(3,1)−(2,2)(3,1)−(2,2),(3,2)−(2,1)(3,2)−(2,1)。

package com.cjh.lanqiao;import java.util.Scanner;import sun.net.www.content.audio.aiff;//连连看
public class Main75 {static int[] xi = {1,1,-1,-1};static int[] yi = {1,-1,1,-1};static int n;static int m;static int ans = 0;static int[][] a;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);n = scanner.nextInt(); m = scanner.nextInt();a = new int[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {a[i][j] = scanner.nextInt();}}for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {dfs(i, j);}}System.out.println(ans);}private static void dfs(int x, int y) {for (int i = 0; i < 4; i++) {int nextX = x + xi[i];int nextY = y + yi[i];while(nextX<n && nextX>=0 && nextY<m && nextY>=0) {if (a[x][y]==a[nextX][nextY]) {ans++;}nextX = nextX + xi[i];nextY = nextY + yi[i];}}}
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词