玄关!60pts求调
查看原帖
玄关!60pts求调
773371
Dreeick楼主2023/12/17 11:02

rt,不造为啥3,4个点过不去,已经很努力在改了QWQ

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#define b(II45I4,I9I98I0) if(II45I4 >= 0 && I9I98I0 >= 0 && I9I98I0 <= 21 && II45I4 <= 21) flag[II45I4][I9I98I0] = true;

using namespace std;

int n,m,cx,cy,a[22][22];
bool flag[22][22];

int main(){
	cin >> n >> m >> cx >> cy;
	a[0][0] = 1;
	b(cx,cy)
	b(cx-2,cy-1)
	b(cx-2,cy+1)
	b(cx-1,cy+2)
	b(cx+1,cy+2)
	b(cx+2,cy+1)
	b(cx+2,cy-1)
	b(cx-1,cy-2)
	b(cx+1,cy-2)
//	for(int i = 0;i <= n;i++){
//		for(int j = 0;j <= m;j++){
//			cout << flag[i][j];
//		}
//		cout << '\n';
//	}
	for(int i = 1;i <= n;i++){
		if(!flag[i][0]) a[i][0] = a[i-1][0];
		else a[i][0] = 0;
	}
	for(int i = 1;i <= m;i++){
		if(!flag[0][i]) a[0][i] = a[0][i-1];
		else a[0][i] = 0;
	}
//	for(int i = 0;i <= n;i++){
//		for(int j = 0;j <= m;j++){
//			cout << a[i][j] << "  ";
//		}
//		cout << '\n';
//	}
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= m;j++){
			if(!flag[i][j]) a[i][j] = a[i-1][j] + a[i][j-1];
			else a[i][j] = 0;
		}
	}
//	for(int i = 0;i <= n;i++){
//		for(int j = 0;j <= m;j++){
//			cout << a[i][j] << "   ";
//		}
//		cout << '\n';
//	}
	cout << a[n][m];

	return 0;
}
2023/12/17 11:02
加载中...