Code Vs 1010 过河卒

/*
很明显动态转移方程f[i][j]表示从(0,0)到(n,m)的方案数;
f[i][j]=f[i-1][j]+f[i][j-1](先处理马的位置) 
f[0][0]=1; 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
const int M=105;
int f[M][M];
int map[M][M];
int s, t;
int ms, mt;
void solve()
{
	f[0][0]=1;
	for(int i=0; i<=s; i++)
	  for(int j=0; j<=t; j++)
	  {
	  	    if (map[i][j]) f[i][j]=0;
	  	    else {
	  		if (i-1>=0 && !map[i-1][j])
	  		f[i][j]+=f[i-1][j];
	  		if (j-1>=0 && !map[i][j-1])
			f[i][j]+=f[i][j-1];
		    }
	  }
	  printf("%d", f[s][t]);
}
void init()
{
	scanf("%d %d %d %d", &s, &t, &ms, &mt);
	memset(f, 0, sizeof(f));
	memset(map, 0, sizeof(map));
	map[ms][mt]=1;
	map[ms-2][mt-1]=1;map[ms-1][mt-2]=1;map[ms+1][mt-2]=1;map[ms+2][mt-1]=1;
	map[ms+2][mt+1]=1;map[ms+1][mt+2]=1;map[ms-1][mt+2]=1;map[ms-2][mt+1]=1;
	
}
int main()
{
	init();
	solve();
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值