算法学习之路|马踏过河足

简介: A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的 C 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 CC 点上的马可以控制 9 个点(图中的 P1,P2⋯P8和 C)。卒不能通过对方马的控制点。

image

A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的 C 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 CC 点上的马可以控制 9 个点(图中的 P1,P2⋯P8和 C)。卒不能通过对方马的控制点。

棋盘用坐标表示,A 点(00)、B 点(n,m)、C 点(cx​,cy​)(0

输入格式
输入 4 个整数,n,m,cx​,cy​,分别表示 B 点的横纵坐标和 C 点的横纵坐标。

输出格式
输出一个整数,代表从 A 点走到 B 点的所有路径数。

样例输入
5 5 2 4
样例输出
14
我的思路:

首先根据马的坐标位置求出马将要跳的点。

在dp中清除这些点的路段。

进行一个dpi中(i,j)为坐标,dpi为所有路径数的状态转移即可。

详情见代码:

#include<iostream>
#define ll long long
using namespace std;

int main(){
    int n,m,Cx,Cy;
    ll dp[21][21]={0};
    cin>>n>>m>>Cx>>Cy;
    dp[Cx][Cy]=-1;
    for(int i=-2;i<=2;i++){
        for(int j=-2;j<=2;j++){
            if(i!=j&&i*j&&-1*i!=j)
                dp[Cx+i][Cy+j]=-1;
        }
    }
    dp[0][0]=1;
    
    for(int i=0;i<=n;i++){
        for(int j=0;j<=m;j++){
            if(dp[i][j]<0){
                dp[i][j]=0;
                continue;
            }
            if(i!=0)    dp[i][j]+=dp[i-1][j];
            if(j!=0)    dp[i][j]+=dp[i][j-1];
        }
    }
    cout<<dp[n][m];
}
目录
相关文章
|
3月前
|
机器学习/深度学习 数据采集 搜索推荐
Paper Digest | 突破个性化推荐数据稀疏性:长尾增强的图对比学习算法研究
本文提出了一种新的长尾增强的图对比学习方法(LAGCL),该方法促使模型同时兼顾头部节点与尾部节点之间的知识,并通过长尾增强技术来使模型产出更均匀更准确的节点表征,从而改进基于 GNN 的推荐任务。
|
3月前
|
算法 网络协议 Linux
【Cisco Packet Tracer】交换机的自学习算法
【Cisco Packet Tracer】交换机的自学习算法
58 0
|
4月前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
35 1
|
8天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
8天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
22天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。
|
22天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
22 0
|
23天前
|
算法 安全 数据可视化
python关联规则学习:FP-Growth算法对药品进行“菜篮子”分析
python关联规则学习:FP-Growth算法对药品进行“菜篮子”分析
|
29天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
2月前
|
机器学习/深度学习 算法 数据挖掘
什么是集成学习算法
什么是集成学习算法
36 0