求助 三个点超时 马拦过河卒
  • 板块题目总版
  • 楼主Lytnsmh
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/7/21 16:00
  • 上次更新2023/11/4 13:56:47
查看原帖
求助 三个点超时 马拦过河卒
537146
Lytnsmh楼主2021/7/21 16:00
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,x,y,ans,a[20][20];
const int mb[8][2]={{0,1},{1,0}};
const int mm[10][10]={{-2,-1},{-1,-2},{1,-2},{2,-1},{2,1},{1,2},{-1,2},{-2,1}};
void dfs(int x,int y)
{
    if(x==n&&y==m)
     {
        ans++;
        return ;
     }
     for(int i=0;i<=1;i++)
      {
        int xx=x+mb[i][0];
        int yy=y+mb[i][1];
        if(xx>=0&&xx<=n&&yy>=0&&yy<=m&&a[xx][yy]==0)
         {
            dfs(xx,yy);
         }
      }
}
int main()
{
    cin>>n>>m>>x>>y;
    a[x][y]=1;
    for(int i=0;i<=7;i++)
     {
        int xx=x+mm[i][0];
        int yy=y+mm[i][1];
        if(xx>=0&&xx<=n&&yy>=0&&yy<=n)
         a[xx][yy]=1;
     }
     dfs(0,0);
     cout<<ans;
    return 0;
}
2021/7/21 16:00
加载中...