【洛谷 P1002】过河卒

过河卒(题目链接)

思路

  • 使用递推公式计算出路径条数,并记录在数组中

代码

#include <iostream>
#include <algorithm>
using namespace std;
#define LOCAL 1
/*
 1. 被马控制的位置为-1
 2. 没有计算的位置为0
 3. 大于0的数字表示从起始点到该位置的条数
 4. 递推公式为该位置上方的路径条数加上左方的路径条数    
*/ 
//全局变量被初始化为0,路径条数可能很多,使用long long 
long long m[21][21];

int main(){
    //文件重定向 
#if LOCAL
    freopen ("datain.txt","r",stdin);
    freopen ("dataout.txt","w",stdout);
#endif
    //马周围的8个位置 
    int no[8][2] = { {1,2},{-1,2},{1,-2},{-1,-2},
                     {2,1},{-2,1},{2,-1},{-2,-1}
                   }; 
    //声明输入的变量,所表示的值与输入顺序对应
    int bx,by,mx,my;
    cin >> bx >> by >> mx >> my; 
    //将马的控制范围设置为-1 
    m[mx][my] = -1;
    for(int i = 0; i < 8; i++){
        int t1 = no[i][0] + mx;
        int t2 = no[i][1] + my;
        //判断马的位置是否超出范围 
        if(0 <= t1 && t1 <= bx && 0 <= t2 && t2 <= by){
            m[t1][t2] = -1;
        }
    }
    //初始化第一个位置 
    m[0][0] = 1;
    for(int i = 0; i <= bx; i++){
        for(int j = 0; j <= by; j++){
            //如果该位置被马控制,不计算 
            if(m[i][j] == -1){
                continue;
            }
            //判断并计算该位置上方的次数 
            if(i - 1 >= 0 && m[i-1][j] != -1){
                m[i][j] +=  m[i-1][j];
            }
            //判断并计算该位置左方的次数 
            if(j - 1 >= 0 && m[i][j-1] != -1){
                m[i][j] +=  m[i][j-1];
            }
        }
    }
//输出整个二维数组  
//  for(int i = 0; i <= bx; i++){
//      for(int j = 0; j <= by; j++){
//          cout << m[i][j] << "\t";
//      }
//      cout << endl;
//  }
    cout << m[bx][by] << endl;
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 各位亲朋好友们: 自喝酒以来,纵横酒场二十余载,喝倒三千、喝哭若干。如今已过了喝酒的黄金年龄,酒量骤减。无论什么白...
    郭宝江_科学靠谱阅读 3,301评论 0 0
  • 愿夜把我带走 没有了灵感 没有了灵魂 模糊的血肉无处安放 努力的向前跋涉 始终难以挣脱桎梏 绝望的神色穿透隔物凝望...
    书君有礼阅读 3,008评论 0 0
  • 最近一段的很长时间,似乎安静了许多。到底安静了什么;是生活?还是心境?因为某些的消逝;是人物?还是事物?越来...
    巷子里2阅读 2,532评论 2 2
  • 大标题 ############### 小标题 ------------------------- #嘻
    Action阅读 1,616评论 0 1

友情链接更多精彩内容