zoukankan      html  css  js  c++  java
  • ACM 马拦过河卒(动态规划)

    解题思路:

    用一个二维数组a[i][j]标记 马的位置和马的跳点(统称控制点)该位置=1;

    再用一个二维数组f[i][j]表示行进的位置,如果前一行的当前列不是马的控制点,或者前一列的当前行不是马的控制点,则说明是可走的,

    f[i][j]+=f[i-1][j];  f[i][j]+=f[i][j-1];

    最后输出 f[目标x][目标y] 

    AC code:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int a[16][16],f[16][16];
     4 int x[8]= {1,2,2,1,-1,-2,-2,-1};
     5 int y[8]= {2,1,-1,-2,-2,-1,1,2};
     6 int main()
     7 {
     8     int x1,y1,x2,y2;
     9     while(scanf("%d%d%d%d",&x1,&y1,&x2,&y2)!=EOF)
    10     {
    11         a[x2][y2]=1;
    12         for(int i=0; i<=7; i++)
    13             if(x2+x[i]<=x1&&y2+y[i]<=y1)
    14                 a[x2+x[i]][y2+y[i]]=1;
    15         f[0][0]=1;
    16         for(int i=0; i<=x1; i++)
    17             for(int j=0; j<=y1; j++)
    18             {
    19                 if(i>0&&!a[i-1][j])
    20                     f[i][j]+=f[i-1][j];
    21                 if(j>0&&!a[i][j-1])
    22                     f[i][j]+=f[i][j-1];
    23             }
    24         printf("%d
    ",f[x1][y1]);
    25     }
    26     return 0;
    27 }
  • 相关阅读:
    Linux中-POSIX 线程详解
    sql server 2008如何导入mdf,ldf文件
    div浏览器兼容问题
    桥(Bridge)模式
    JSTL核心标签
    filter中的dispatcher解析
    synchronized探究
    最全设计模式(转载)
    面试题总结
    企业为什么要去竞争?
  • 原文地址:https://www.cnblogs.com/A--Q/p/5783204.html
Copyright © 2011-2022 走看看