✏️ 纠错
第 161 题 / 共 201 题
第10题 下面程序的输出为( )。
#include <iostream>
const int N = 10;
int ch[N][N][N];
int main() {
    for (int x = 0; x < N; x++)
        for (int y = 0; y < N; y++)
            for (int z = 0; z < N; z++)
                if (x == 0 && y == 0 && z == 0)
                    ch[x][y][z] = 1;
                else {
                    if (x > 0)
                        ch[x][y][z] += ch[x - 1][y][z];
                    if (y > 0)
                        ch[x][y][z] += ch[x][y - 1][z];
                    if (z > 0)
                        ch[x][y][z] += ch[x][y][z - 1];
                }
    std::cout << ch[1][2][3] << std::endl;
    return 0;
}
📝 题目解析

答案:A

考纲知识点:动态规划,排列组合

解析:本题可以理解为计算从(0,0,0)到(1,2,3)的路径数量,每次只能沿x、y或z轴正方向移动一步。在6个位置中,安排1个x步、2个y步、3个z步,有多少种不同的排列方式,使用排列组合公式(1+2+3)!/1!/2!/3!得到答案为60,或者程序运行的方式。