zoukankan      html  css  js  c++  java
  • openjudge8465:马走日 [搜索]

    描述

    马在中国象棋以日字形规则移动。

    请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。

    输入

    第一行为整数T(T < 10),表示测试数据组数。
    每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0<=x<=n-1,0<=y<=m-1, m < 10, n < 10)

    输出

    每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。

    样例输入

    1
    5 4 0 0

    样例输出

    32

    生活中需要一些5分钟写出来的傻题
    但是我CE了三次!!!
    error: reference to ‘end’ is ambiguous
    

     于是我发这么一题傻题


     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 
     6 const int maxn=10;
     7 bool mp[maxn][maxn];
     8 int ans;
     9 int mx,my;
    10 int sx,sy;
    11 int ens;
    12 int dirx[8]={-1,-1,-2,-2,1,1,2,2},diry[8]={-2,2,-1,1,-2,2,-1,1};
    13 
    14 void dfs(int x,int y,int step){
    15     if(step==ens){
    16         ans++;
    17         return;
    18     }
    19     for(int i=0;i<8;i++){
    20         int xx=x+dirx[i],yy=y+diry[i];
    21         if(xx<0||xx>=mx||yy<0||yy>=my)  continue;
    22         if(!mp[xx][yy]){
    23             mp[xx][yy]=1;
    24             dfs(xx,yy,step+1);
    25             mp[xx][yy]=0;
    26         }
    27     }
    28 }
    29 
    30 int main(){
    31     //freopen("temp.in","r",stdin);
    32     int T;
    33     scanf("%d",&T);
    34     while(T--){
    35         scanf("%d%d%d%d",&mx,&my,&sx,&sy);
    36         ens=mx*my;
    37         mp[sx][sy]=1;  ans=0;
    38         dfs(sx,sy,1);
    39         printf("%d
    ",ans);
    40         mp[sx][sy]=0;
    41     }
    42     return 0;
    43 }

    我像风一样自由

    就像你的温柔无法挽留

  • 相关阅读:
    Springboot中使用Interceptor(拦截器)
    八大排序之冒泡排序
    八大排序之快速排序
    mysql 用户的增删改与授权
    基于Java8开发接口时,处理Java8中的日期
    Springboot中Filter的使用
    正则校验日期,不考虑闰年和闰月
    正则校验时间,24小时制
    记一下mybatis中foreach循环遇到的一个小问题
    sqlserver中一条语句执行查询与更新
  • 原文地址:https://www.cnblogs.com/ZYBGMZL/p/6901533.html
Copyright © 2011-2022 走看看