• 牛客小白月赛6-E对弈-简单搜索


    https://www.nowcoder.com/acm/contest/136/E

    我搜索很差啊,看了学长代码,自己在下面手敲了一遍,感觉学长的极其精巧,把我繁琐的搜索步骤给简化了不少

    其实本题想法还是很简单的,就是每次放一个物品,我们就搜索他周围的位置,会不会有连续五个,但是我面临的困难是,怎么搜索,有可能我方的棋子在中间,其他4个棋子在两个方向上。

    其实很好想啊,我们

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int dx[10]={1,-1,1,-1,0,0,-1,1};
    int dy[10]={1,-1,0,0,-1,1,1,-1};
    int vis[1004][1004];
    int n,m;
    bool dfs(int x,int y,int z){
       vis[x][y]=z;
       int xx,yy,cnt;
       for (int i=0;i<=7;i++){
          xx=x;
          yy=y;
          if (i%2==0){
            cnt=1;
          }
          for(int j=0;j<=3;j++){
             xx+=dx[i];
             yy+=dy[i];
             if (xx<1 || yy<1 || xx>n || yy>n || vis[xx][yy]!=z){
                break;
             }
             cnt++;
          }
          if (cnt>=5){
            return 1;
          }
       }
       return 0;
    }
    int main()
    {
        while(~scanf("%d%d",&n,&m)){
            int x,y;
            int flag=-1;
            memset(vis,-1,sizeof(vis));
            for (int i=1;i<=m;i++){
               scanf("%d%d",&x,&y);
               if (flag==-1){
                  if (dfs(x,y,i%2)){
                      flag=i;
                  }
               }
            }
            if (flag==-1){
                printf("UNK %d
    ",m);
            }else if (flag%2==0){
                printf("WHZ %d
    ",flag);
            }else if (flag%2==1){
                printf("HtBest %d
    ",flag);
            }
        }
        return 0;
    }

    每次遍历一个方向,但是我是连续搜索两个方向,x%2==1一个方向,x%2==0是上一个方向的反方向,每次搜索连续的相同棋子,当两次后,把cnt初始化为1就好了

    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    什么是CDN
    Vue3源码调试步骤
    vscode插件Project Manager
    vscode插件node_modules
    环境变量配置中,initial value 与 current value的区别
    Windows驱动开发错误:MSB8040 此项目需要缓解了Sprctre漏洞的库
    Visual Studio2022未能正确加载“XX“包
    LAB08:Pod 扩容
    安全管理制度(三)制定和发布
    安全管理制度(二)管理制度
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9509676.html
Copyright © 2020-2023  润新知