✏️ 纠错
第 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,或者程序运行的方式。