20分求助
查看原帖
20分求助
1021623
AVLw楼主2023/9/25 14:05
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include <vector>
using namespace std;
const int N = 44;
long long f[N][N] = { 0 };
int ctrl[N][N], xb, yb, hx, hy;
int dx[] = { 0, -2, -1, 1, 2, 2, 1, -1, -2 };
int dy[] = { 0, 1, 2, 2, 1, -1, -2, -2, -1 };
//f[i,j]=f[i-1,j]+f[i,j-1]
int main() {
	cin >> xb >> yb >> hx >> hy;//B 和 马
	
	for (int i = 0; i < 9; i++) {
		int tmpx = hx + dx[i]; int tmpy = hy + dy[i];
		if (tmpx >= 0 && tmpx <= yb && tmpy >= 0 && tmpy <= xb)
			ctrl[tmpx][tmpy] = 1;//标记马控制点
	}
	
	
	f[0][1] = 1;
	for (int i = 1; i <= xb; i++) {
		for (int j = 1; j <= yb; j++) {
			if (!ctrl[i][j]) {
				f[i][j] = f[i][j - 1] + f[i - 1][j];
				
			}
		}

	}
	cout << f[xb][yb];



	return 0;
}

两个if合并成一个用f[i][j] = f[i][j - 1] + f[i - 1][j]; 不平移用If判断怎么做

2023/9/25 14:05
加载中...