列表

详情


HJ91. 走方格的方案数

描述

请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。

注:沿棋盘格之间的边缘线行走

数据范围:


输入描述

输入两个正整数n和m,用空格隔开。(1≤n,m≤8)

输出描述

输出一行结果

示例1

输入:

2 2

输出:

6

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 1ms, 内存消耗: 268KB, 提交时间: 2020-12-25

#include <stdio.h>
int main(void)
{
	int i, j, n, m, dp[10][10];
	for(i=0; i<10; i++)
		dp[i][0] = 1;
	for(j=0; j<10; j++)
		dp[0][j] = 1;
	for(i=1; i<10; i++)
		for(j=1; j<10; j++)
			dp[i][j] = dp[i-1][j] + dp[i][j-1];
			
	for( ; scanf("%d%d", &n, &m)!=EOF; )
		printf("%d\n", dp[m][n]);
	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 344KB, 提交时间: 2020-11-22

#include <stdio.h>
#include <string.h>

int dfs_stat(int m, int n){
    if(!m || !n) return 1;
    else return dfs_stat(m - 1, n) + dfs_stat(m, n - 1);
}
int main(void){
    int m, n;
    while(scanf("%d%d", &n, &m) == 2){
        printf("%d\n", dfs_stat(m, n));
    }
    return 0;
}

上一题