zoukankan      html  css  js  c++  java
  • 【解题报告】[动态规划]-PID69 / 过河卒

    原题地址:http://www.rqnoj.cn/problem/69

    解题思路:

      用DP[i][j]表示到达(i,j)点的路径数,则

    DP[0][0]=1

    DP[i][j]=DP[i-1][j]+DP[i][j-1](不是马的控制点和马的当前位置)

    DP[i][j]=0(马的位置和马的控制点)

    代码:

     1 #include<stdio.h>
     2 #include<iostream>
     3 #define abs(x) (((x)>0)?(x):(-(x)))
     4 using namespace std;
     5 long long dp[35][35]={1,0};
     6 int is(int n,int m,int x,int y)
     7 {
     8     int xx=abs(x-n);
     9     int yy=abs(y-m);
    10     if((xx==1&&yy==2)||(xx==2&&yy==1)||(n==x&&m==y)) return 0;
    11     return 1;
    12 }
    13 long long d(int x,int y)
    14 {
    15     if(x<0||y<0) return 0;
    16     else return dp[x][y];
    17 }
    18 int main()
    19 {
    20     int n,m,x,y,i,j;
    21     cin>>n>>m>>x>>y;
    22     for(i=0;i<=n;i++)
    23     {
    24         for(j=0;j<=m;j++)
    25         {
    26             if(j==0&&i==0) dp[i][j]=1;
    27             else if(!is(i,j,x,y))
    28             {
    29                 dp[i][j]=0;
    30             }
    31             else dp[i][j]=d(i-1,j)+d(i,j-1);
    32             //printf("%5lld",dp[i][j]);
    33         }
    34        // printf("
    ");
    35     }
    36     printf("%lld
    ",dp[n][m]);
    37     return 0;
    38 }
    View Code
  • 相关阅读:
    Fibonacci Numbers
    Fibonacci(...刷的前几道题没有记博客的习惯,吃了大亏)
    Fibonacci Check-up
    Pendant
    奥运
    Tr A
    A Simple Game
    Be the Winner
    John
    Being a Good Boy in Spring Festival(尼姆博弈)
  • 原文地址:https://www.cnblogs.com/syiml/p/3716840.html
Copyright © 2011-2022 走看看