zoukankan      html  css  js  c++  java
  • 过河卒(Noip2002)(dp)

    过河卒(Noip2002)

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 7  解决: 6
    [提交][状态][讨论版][命题人:quanxing]

    题目描述

    棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给出的,C≠A且C≠B。现在要求你计算出卒从A点能够到达B点的路径的条数。

    输入

    给出n、m和C点的坐标。

    输出

    从A点能够到达B点的路径的条数。

    样例输入

    8 6 0 4

    样例输出

    1617
    #include<stdio.h>
    #include<string.h>
    int a[20][20];
    int main()
    {
    memset(a,-1,sizeof(a));
    int i,j,m,n,x,y;
    scanf("%d%d%d%d",&n,&m,&x,&y);
    m++;n++;x++;y++;
    for(i=0;i<=n;i++)a[i][0]=0;
    for(i=0;i<=m;i++)a[0][i]=0;
    a[1][1]=1;
    a[x][y]=0;
    a[x+1][y+2]=0;
    a[x+1][y-2]=0;
    a[x+2][y+1]=0;
    a[x+2][y-1]=0;
    a[x-1][y+2]=0;
    a[x-1][y-2]=0;
    a[x-2][y+1]=0;
    a[x-2][y-1]=0;
    
    
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    if(a[i][j]==-1)
    a[i][j]=a[i-1][j]+a[i][j-1];
    printf("%d",a[n][m]);
    return 0;
    }


  • 相关阅读:
    C复制字符串
    C语言分解数组
    perlCGI编程之测试环境
    linux下c语言 读取文件
    C++的组合(Composite)模式
    C#GDI+绘制多行文本和格式化文本
    shell中引号的应用
    perlCGI编程之Apache服务器安装配置
    求二叉树的深度
    perlCGI编程之页面参数传递
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/8593652.html
Copyright © 2011-2022 走看看