wikioi p1010 过河卒

来源:互联网 发布:php磁力解析源码 编辑:程序博客网 时间:2024/04/26 18:47

这题我为了图省事,直接在原先的dfs上,加了一个记忆化。

#include<stdio.h>#include<iostream>#include<string.h>using namespace std;const int MAX_N = 21;const int MAX_M = 9;bool map[MAX_N][MAX_N];int f[MAX_N][MAX_N];int dx[]={1,1,-1,-1,2,2,-2,-2,0};int dy[]={2,-2,2,-2,1,-1,1,-1,0};int n,m,x,y;bool out(int x,int y){     if (x<0||x>n) return false;     if (y<0||y>m) return false;     return true;}int init(){    scanf("%d %d %d %d",&n,&m,&x,&y);    int i;    memset(map,true,sizeof(map));    for (i=0;i<MAX_M;i++)    if (out(x+dx[i],y+dy[i])) map[x+dx[i]][y+dy[i]]=false;    memset(f,-1,sizeof(f));}int work(int x,int y){    if (x==n&&y==m) return 1;    if (!out(x,y)) return 0;    if (!map[x][y]) return 0;    if (f[x][y]!=-1) return f[x][y];    return f[x][y]=work(x+1,y)+work(x,y+1);}int main(){    init();    printf("%d",work(0,0));    return 0;}


 

原创粉丝点击