60,玄关求助
查看原帖
60,玄关求助
568903
Miracle1024楼主2023/5/21 11:52
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxx=0x3f3f3f,minn=-0x3f3f3f;
ll n,m,mp[2][22][22]={0},mx,my;
int dp (int x,int y){
	if(mp[0][x][y]==-1)return 0;
	if(x==0||y==0) return 1;
	if(mp[0][x][y])return mp[1][x][y];
	mp[1][x][y]= dp(x-1,y)+dp(x,y-1);
	return mp[1][x][y];
	
}
int main(){
//	freopen("doc.in","r",stdin);
//	freopen("doc.out","w",stdout);
	cin>>n>>m>>mx>>my;
	if(mx>=0&&my>=0)mp[0][mx][my]=-1;
	if(mx+1<=n&&mx+1>=0&&my+2<=m&&my+2>=0) mp[0][mx+1][my+2]=-1;
	if(mx-1<=n&&mx-1>=0&&my+2<=m&&my+2>=0) mp[0][mx-1][my+2]=-1;
	if(mx+1<=n&&mx+1>=0&&my-2<=m&&my-2>=0) mp[0][mx+1][my-2]=-1;
	if(mx-1<=n&&mx-1>=0&&my-2<=m&&my-2>=0) mp[0][mx-1][my-2]=-1;
	if(mx-2<=n&&mx-2>=0&&my+1<=m&&my+1>=0) mp[0][mx-2][my+1]=-1;
	if(mx+2<=n&&mx+2>=0&&my+1<=m&&my+1>=0) mp[0][mx+2][my+1]=-1;
	if(mx-2<=n&&mx-2>=0&&my-1<=m&&my-1>=0) mp[0][mx-2][my-1]=-1;
	if(mx+2<=n&&mx+2>=0&&my-1<=m&&my-1>=0) mp[0][mx+2][my-1]=-1;
	dp(n,m);
	cout<<mp[1][n][m];
    return 0;
}

记录

2023/5/21 11:52
加载中...