计蒜客 递推
来源:互联网 发布:mysql 修改字段长度 编辑:程序博客网 时间:2024/06/08 02:11
A 点有一个过河卒,需要走到目标BBB 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的 CCC 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 CCC 点上的马可以控制 999 个点(图中的 P1,P2⋯P8P1,P2 \cdots P8P1,P2⋯P8 和 CCC)。卒不能通过对方马的控制点。
棋盘用坐标表示,AAA 点(000,000)、BBB 点(nnn,mmm)、CCC 点(cxc_xcx,cyc_ycy)(0<cx<n≤200 < c_x < n \leq 200<cx<n≤20,0<cy<m≤200 < c_y < m \leq 200<cy<m≤20)。现在要求你计算出过河卒从AAA 点能够到达 BBB 点的路径的条数。注:象棋中马走“日”。
输入格式
输入 444 个整数,nnn,mmm,cxc_xcx,cyc_ycy,分别表示BBB 点的横纵坐标和 CCC 点的横纵坐标。
输出格式
输出一个整数,代表从 AAA 点走到 BBB 点的所有路径数。
样例输入
5 5 2 4
样例输出
14#includeint cx, cy; //马的坐标int x[8] = { 1,1,2,2,-1,-1,-2,-2 };int y[8] = { 2,-2,1,-1,2,-2,1,-1 };long long d[30][30];long long f[30][30];int main(){int n, m, cx, cy;scanf("%d%d%d%d", &n, &m, &cx, &cy);for (int i = 0; i < 30; ++i){for (int j = 0; j < 30; ++j){d[i][j] = 0;}}d[cx][cy] = 1;for (int i = 0; i < 8; ++i){int tx = cx + x[i];int ty = cy + y[i];if (tx >= 0 && tx <= n&&ty >= 0 && ty <= n){d[tx][ty] = 1;}}f[0][0] = 1;for (int i = 0; i <= n; ++i) {for (int j = 0; j <= m; ++j) {if (i != 0&&d[i][j]!=1) {f[i][j] = f[i][j] + f[i - 1][j];}if (j != 0 && d[i][j] != 1) {f[i][j] = f[i][j] + f[i][j - 1];}}}printf("%lld", f[n][m]);// f[n][m]即为点(n,m)的路径数目。return 0;}
蒜头君觉得白色的墙面好单调,他决定给房间的墙面涂上颜色。他买了 333 种颜料分别是红、黄、蓝,然后把房间的墙壁竖直地划分成 nnn 个部分,蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。
例如,当 n=5n = 5n=5 时,下面就是一种合法方案。
由于墙壁是一个环形,所以下面这个方案就是不合法的。
输入格式
一个整数 nnn,表示房间被划分成多少部分。(1≤n≤501 \leq n \leq 501≤n≤50)
输出格式
一个整数,表示给墙壁涂色的合法方案数。
样例输入
4
样例输出
18
#includelong long F[10000];int main(){int n;scanf("%d", &n);F[1] = 3;F[2] = 6;F[3] = 6;for (int i = 4; i <=n; i++){F[i] = F[i - 1] + 2 * F[i - 2];}printf("%lld\n", F[n]);return 0;}
阅读全文
0 0
- 计蒜客 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- canvas
- C# datatable过滤某一列的重复数据(相当于distinct)
- Android5.0 framework 灯光系统 -- 电池灯源码分析
- 2017.8.11暑假集训第十二天
- 勇哥叫你spring
- 计蒜客 递推
- Oracle 伪列: ROWNUM 应用与总结
- Ajax
- Unity Lua 怎么设置按钮点击不生效以及变灰
- Spring Boot 与Redis 集成实现消息发布/订阅模式
- javascript实现全选择反选
- HDU 1260 Tickets
- MD4长度扩展攻击
- 什么样的作品是好的文学作品