金山程序题
程序题,没有规定用什么语言:
n个选项,每个选项里面又有若干个子选项,从每个选项中选一个子选项,一共有多少个组合,
金山程序题
。#include
#define N 3 //选项数
#define Alen 3 //第一个选项的.子选项数
#define Blen 3 //第二个选项的子选项数
#define Clen 3 //第三个选项的子选项数
int num = 0; //总的组合数
char A[N][Alen] = {{’A', ‘B’, ‘C’}, {’D', ‘E’, ‘F’}, {’H', ‘I’, ‘J’}};//3个选项,每个选项有3个子选项
int Len[N] = {Alen, Blen, Clen};//每个选项的子选项数
int Path[N];//保存一个组合
void Recrusive(int i)
{
//超过N层输出结果并且退出循环
if (i >= N)
{
int k;
num++;
printf(”%d: “,num);
for (k = 0; k < N; k++)
{
printf(”%c “, Path[k]);
}
printf(”\n”);
return;
}
int j ;
for (j = 0; j < Len[i]; j++)
{
//保存遍历字符
Path[i] = A[i][j];
//调用下层循环
Recrusive(i + 1);
}
}
void main()
{ Recrusive(0);
}