首页 > 其他分享 >象棋(搜索+优化)

象棋(搜索+优化)

时间:2023-10-30 16:26:53浏览次数:27  
标签:int 象棋 ans nx ny 搜索 dx dy 优化

Lutece (uestc.edu.cn)

哦突然想起来这个搜索叫启发式搜索......

#include "bits/stdc++.h"
using namespace std;
char s[10][10];
int dx[8]={-2,-2,-1,-1,1,1,2,2};
int dy[8]={-1,1,-2,2,-2,2,-1,1};
int ans;
char ss[6][6]={"11111","01111","00*11","00001","00000"};
bool ck(){
    int i,j;
    for (i=0;i<5;i++)
        for (j=0;j<5;j++)
            if (s[i][j]!=ss[i][j]) return false;
    return true;
}
void dfs(int dp,int nx,int ny){
    int i,j,zt=0;
//    for (i=0;i<5;i++){
//            printf("%s\n",s[i]);
//            
//        }printf("\n\n");
    if (dp>15) return;
    if (ck()){
        ans=min(ans,dp);
        return;
    }
    for (i=0;i<5;i++)
        for (j=0;j<5;j++)
            if (s[i][j]!=ss[i][j]){
                zt++;
                if (dp+zt>ans) return;
            }
    for (i=0;i<8;i++){
        if(nx+dx[i]<0 || nx+dx[i]>4 || ny+dy[i]<0 || ny+dy[i]>4) continue;
        swap(s[nx][ny],s[nx+dx[i]][ny+dy[i]]);
        dfs(dp+1,nx+dx[i],ny+dy[i]);
        swap(s[nx][ny],s[nx+dx[i]][ny+dy[i]]);
    }
}
int main(){
    int i,j,t,nx,ny;
    scanf("%d",&t);
    while (t--){
        for (i=0;i<5;i++)
            scanf("\n%s",s[i]);
        for (i=0;i<5;i++)
            for (j=0;j<5;j++)
                if (s[i][j]=='*')
                    nx=i,ny=j;
        ans=16;
        dfs(0,nx,ny);
        printf("%d\n",(ans==16?-1:ans));
    }
    return 0;
}

 

标签:int,象棋,ans,nx,ny,搜索,dx,dy,优化
From: https://www.cnblogs.com/keximeiruguo/p/17798123.html

相关文章

  • 谷歌搜索引擎课程笔记
    1、bywave、lantem搜索引擎处理流程GoogleHackingDatabase:GHDB汇总了数千条谷歌搜索高级语法,涵盖了立足点、敏感路径、敏感文件、错误信息、漏洞文件、漏洞服务器、Web服务器检测等方方面面。2004年开始更名为GHDB,现在由网站exploit-db.com维护GoogleHacking操作符基础操作符:......
  • 二叉搜索树结构分析
    二叉查找树(BinarySearchTree),(又:二叉搜索树,二叉排序树),它具有以下特点:若任一节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任一节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树;没有键值相等的节点。下......
  • mysql优化入门
    查看慢sqlSelect*frominformation_schema.processlist;Show[full]processlist;不加full只能显示前100字符 通过慢日志Slowquerylog记录时间超过long_query_time的SQLlog_slow_admin_statements记录ALTERTABLE,ANALYZETABLE,CHECKTABLE,CREATEINDEX,DROPINDE......
  • 数据结构与算法 | 二分搜索(Binary Search)
    二分搜索(BinarySearch)文承上篇,搜索算法中除了深度优先搜索(DFS)和广度优先搜索(BFS),二分搜索(BinarySearch)也是最基础搜索算法之一。二分搜索也被称为折半搜索(Half-intervalSearch)也有说法为对数搜索算法(LogarithmicSearch),用于在已排序的数据集中查找特定元素。搜索过程从排序数......
  • 短视频app源码,Flutter组件--搜索页面布局
    短视频app源码,Flutter组件--搜索页面布局 classLayoutDemoextendsStatelessWidget{ constLayoutDemo({Key?key}):super(key:key); @override Widgetbuild(BuildContextcontext){  returnPadding(   padding:constEdgeInsets.all(10),   c......
  • C++U5-深度优先搜索-03(记忆化搜索、剪枝和优化)
    ......
  • 搜索技术
     why,learn,create,dohao,where谷歌>公众号>抖音>百度限制关键词搜索"易烊千玺"intitle:iPhone15摄像头进灰allintitle:iPhone15摄像头进灰成都intext:"刘寅钰"资阳李志奇site:cctv.com限制输出结果网站李志强inurl:cctvimagesize:2560*1440限制图片大小filetype:pdf......
  • 模拟实现二叉搜索树(非kv模式)(上)
    本篇博客主要是讲解什么是二叉搜索树,以及模拟实现二叉搜索树的插入节点,中序遍历,查找特定节点,以及删除节点。什么是二叉搜索树首先二叉搜索树肯定是一棵二叉树,对于二叉树我们应该是陌生了。而我们在学习二叉树的时候知道,如果只是一棵普通的二叉树,用来储存数据是没有任何意义的,因为如......
  • 33-Vue脚手架-浏览器本地存储(使用本地存储优化Todo-List案例)
    什么是网络存储在HTML5之前,开发人员一般是通过使用Cookie在客户端保存一些简单的信息的。在HTML5发布后,提供了一种新的客户端本地保存数据的方法,那就是WebStorage,存储内容大小一般支持5MB左右(不同浏览器可能还不一样),它允许Web应用程序在用户浏览器中实现本地存储机制,两种最......
  • 【智能优化算法】开普勒优化算法KOA附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......