• 跳马问题


    【问题描述】

    有一只中国象棋中的 “ 马 ” ,在半张棋盘的左上角出发,向右下角跳去。规定只许向右跳(可上,可下, 但不允许向左跳)。请编程求从起点 A(1,1) 到终点 B(m,n) 共有多少种不同跳法。

    【输入格式】

     
        输入文件只有一行,两个整数m和n(1≤m,n≤20),两个数之间有一个空格。
     【输出格式】
     
        输出文件只有一个整数,即从 A 到 B 全部的走法。
     
     【输入输出样例】
     
       输入文件(horse.in)
       5 9
     
      输出文件(horse.out)
       37

    很简单的dp。

     1 #include <iostream>
     2 #include <fstream>
     3 #include <cstdlib>
     4 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
     5 using namespace std;
     6  ifstream fin("horse.in");
     7 ofstream fout("horse.out"); 
     8 int he=0,zo=0;
     9 int heng[4]={-2,-1,1,2};
    10 int zong[4]={1,2,2,1};
    11 int jiyi[25][25]={0}; 
    12 int dp(int hen,int zon){
    13  if(hen>he||zon>zo)return 0;
    14  if(hen<1)return 0;
    15  if(jiyi[hen][zon]!=0)return jiyi[hen][zon];
    16  if(hen==he&&zon==zo)return 1;
    17  int tem=0;
    18  for(int x=0;x<4;x++){
    19   tem+=dp(hen+heng[x],zon+zong[x]);
    20  } 
    21  jiyi[hen][zon]=tem;
    22  return tem;
    23 } 
    24 
    25 int main(int argc, char *argv[]) {
    26  fin>>he>>zo;
    27  int ans=dp(1,1);
    28  fout<<ans;
    29  return 0;
    30 }
  • 相关阅读:
    Smobiler 仿知乎APP个人主页
    smobiler仿自如app筛选页面
    Smobiler 仿美柚APP个人主页
    谈谈网络协议 – 物理层
    谈谈网络协议 – 路由
    谈谈网络协议 – 基础知识
    Flutter(三):Flutter App 可行性分析
    Flutter(二):编写第一个Flutter App
    Flutter(一):MAC的Flutter安装指南
    Jetpack新成员,Paging3从吐槽到真香
  • 原文地址:https://www.cnblogs.com/Ateisti/p/4778766.html
Copyright © 2020-2023  润新知