递推递归-L
来源:互联网 发布:舍恩伯格大数据时代 编辑:程序博客网 时间:2024/06/06 18:40
题目:
Description
棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m为不超过15的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。
Input
一行四个数据,用空格分隔,分别表示B点的坐标和马的坐标。
Output
一个数据,表示所有的路径条数。
Sample Input
6 6 3 3
Sample Output
6
解题思路:
这道题不是我自己做出来的,当时只想到了马的周围有8个点不能走,但是怎么求总的路线却是没有思路的,无奈之下去网上找了找解答,看完才发现这道题跟课件里面的吃金币游戏的解题思路是一样的,每个点的路线个数等于它左边和上边的个数之和,注意要判断整个棋盘的边界否则会越界。
#include <iostream>using namespace std;int a[21][21] = {0};void soldier(){ int i, j, m, n, x, y; cin >> n >> m >> x >> y; if(true){ a[x][y] = -1; if(x - 1 >= 0 && y - 2 >= 0) a[x-1][y-2] = -1; if(x - 2 >= 0 && y - 1 >= 0) a[x-2][y-1] = -1; if(x - 2 >= 0 && y + 1 <= m-1) a[x-2][y+1] = -1; if(x - 1 >= 0 && y + 2 <= m-1) a[x-1][y+2] = -1; if(x + 1 <= n && y + 2 <= m) a[x+1][y+2] = -1; if(x + 2 <= n && y + 1 <= m) a[x+2][y+1] = -1; if(x + 2 <= n && y - 1 >= 0) a[x+2][y-1] = -1; if(x + 1 <= n && y - 2 >= 0) a[x+1][y-2] = -1; } for(i = 0; i <= n; i++){ for(j = 0; j <= m; j++){ if(a[i][j] == -1) continue; if(i == 0 && j == 0) {a[i][j] = 1;continue;} a[i][j] = 0; if(j-1 >= 0 && a[i][j-1] != -1) a[i][j] += a[i][j-1]; if(i-1 >= 0 && a[i-1][j] != -1) a[i][j] += a[i-1][j]; if(a[i][j] == 0) a[i][j] = -1; } } if(a[n][m] == -1) cout << 0; else cout << a[n][m];}int main(){ soldier(); return 0;}回顾:
这道题毕竟不是自己做出来的,希望下次遇到类似的不会再这样了。
0 0
- 递推递归-L
- 递推递归练习 L
- 递推递归练习L
- 递归递推练习 L
- 递推递归练习L
- 递推递归练习 中的L题
- ACM递归递推练习 Problem L
- 递推递归练习 L 马拦过河卒
- 递推递归练习L马拦过河卒
- 递推递归练习--L(马拦过河卒)
- 递推与递归
- 递推与递归
- hdu递归,递推
- 递归,递推思想
- 递推与递归
- 递推与递归
- 递归与递推
- 递归和递推
- 使用eclipse开发spark程序 wordcount 事例
- tensorflow12《TensorFlow实战Google深度学习框架》笔记-06-01卷积层、池化层样例code
- Opencv笔记——findContours函数
- C++模板详解
- 五大常用算法:回溯法
- 递推递归-L
- springmvc如何上传图片,如何保存在本地文件夹 利用tomcat的虚拟路径访问
- JSP初学(Eclipse Java EE 环境搭建)
- 网络编程_InetAddress类的概述和使用
- java关键字static完全总结
- NAT /DNS 配置实例
- 【Mybatis】——ResultMap学习
- 2017年院赛C题 treat
- 俄罗斯方块控制台程序C++