走格子 输入起始点和终点
整数范围在正负一万内


#include<stdio.h>
int p[10000][10000];
int main() {
int n, m, a, b;scanf("%D %D % %d", &a, &b, &n, &m);if (a < 0 && n>0) {a = -a;n = n + a;}if (b < 0 && m>0) {b = -b;m = m + b;}if (a < 0 && n < 0) {a = -a;n = -n + a;}if (b < 0 && m < 0) {b = -b;m = -m + b;}for (int i = 1; i <= n; i++) {p[i][1] = a;}for (int j = 1; j <= m; j++) {p[1][j] = b;}for (int i = 2; i <= n; i++) {for (int j = 2; j <= m; j++) {if (i % 2 != 0 || j % 2 != 0) {p[i][j] = p[i - 1][j] + p[i][j - 1];}}}printf("%d\n", p[n][m]);return 0;}
空间复杂度太高了,10000改小一点就好
建议使用二维数据的时候初始化以下,int p[10000][10000]={0};防止自身数据造成内存越界