蓝桥杯:连连看

打印 上一主题 下一主题

主题 1660|帖子 1660|积分 4980


本题大意要我们在一个给定的nxm的矩形数组中找出符合条件的格子
条件如下:
               1.数值相同
               2.两个横坐标和纵坐标的差值相等(由此可得是一个对角线上的格子)
那么根据以上条件我们可以用HashMap来解决这个问题,统计对角线上数值相同的格子有几个。
以下是代码的实现:(getOrDefault解决数组中没有这个key的情况。)记得输出的时间乘2因为双向统计
  1. package 连连看;
  2. import java.util.HashMap;
  3. import java.util.Scanner;
  4. public class Main {
  5.     static int[][] a=new int[1001] [1001];
  6.     static long result=0;
  7.     static int n,m ;
  8.     public static void main(String[] args) {
  9.         Scanner scanner=new Scanner(System.in);
  10.         n =scanner.nextInt();
  11.         m =scanner.nextInt();
  12.         for (int i = 1; i <= n; i++) {
  13.             for (int j = 1; j <=m ; j++) {
  14.                 a[i][j]=scanner.nextInt();
  15.             }
  16.         }
  17.         for (int i = 1; i <=n ; ++i) {
  18.             //先处理从左上到右下角的对角线
  19.             g_l(i,1);
  20.             g_r(i,1);
  21.         }
  22.         for (int i = 2; i <=m ; ++i) {
  23.             //先处理从左上到右下角的对角线
  24.             g_l(1,i);
  25.             g_r(n,i);
  26.         }
  27.         System.out.println(result*2);
  28.     }
  29.     static void g_l(int x, int y) {
  30.         HashMap<Integer,Integer> hm=new HashMap<>();
  31.         while (x<=n&&y<=m)
  32.         {
  33.             result+=hm.getOrDefault(a[x][y],0);
  34.             hm.put(a[x][y],hm.getOrDefault(a[x][y],0)+1);
  35.             x++;
  36.             y++;
  37.         }
  38.     }
  39.     //从左下角到右上角的对角线
  40.     static void g_r(int x, int y) {
  41.         HashMap<Integer,Integer> hm=new HashMap<>();
  42.         while (x>0&&y<=m)
  43.         {
  44.             result+=hm.getOrDefault(a[x][y],0);
  45.             hm.put(a[x][y],hm.getOrDefault(a[x][y],0)+1);
  46.             x--;
  47.             y++;
  48.         }
  49.     }
  50. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表