码迷,mamicode.com
首页 > 其他好文 > 详细

【解题报告】[动态规划]-PID69 / 过河卒

时间:2014-05-09 10:02:50      阅读:421      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   tar   color   

原题地址: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(马的位置和马的控制点)

 

代码:

bubuko.com,布布扣
 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("\n");
35     }
36     printf("%lld\n",dp[n][m]);
37     return 0;
38 }
View Code

 

【解题报告】[动态规划]-PID69 / 过河卒,布布扣,bubuko.com

【解题报告】[动态规划]-PID69 / 过河卒

标签:style   blog   class   code   tar   color   

原文地址:http://www.cnblogs.com/syiml/p/3716840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!