#include <stdio.h>
#define MAXM 10
int m, n;
int workarr[MAXM];
int record[MAXM];
void DFS(int l)
{
int i;
if (l == n)
{
for (i=0; i<n; i++)
printf("%c", 'a'+record[i]);
printf("/n");
return;
}
for (i=0; i<m; i++)
if (workarr[i] > 0)
{
workarr[i]--;
record[l] = i;
DFS(l+1);
workarr[i]++;
}
}
int main()
{
int i;
while (scanf("%d%d", &m, &n) != EOF)
{
for (i=0; i<m; i++)
workarr[i] = n;
DFS(0);
}
return 0;
}
#define MAXM 10
int m, n;
int workarr[MAXM];
int record[MAXM];
void DFS(int l)
{
int i;
if (l == n)
{
for (i=0; i<n; i++)
printf("%c", 'a'+record[i]);
printf("/n");
return;
}
for (i=0; i<m; i++)
if (workarr[i] > 0)
{
workarr[i]--;
record[l] = i;
DFS(l+1);
workarr[i]++;
}
}
int main()
{
int i;
while (scanf("%d%d", &m, &n) != EOF)
{
for (i=0; i<m; i++)
workarr[i] = n;
DFS(0);
}
return 0;
}
---------------
本文展示了一个使用C语言实现的深度优先搜索(DFS)算法示例,该算法用于生成所有可能的字符组合,根据输入的字符数量和每个字符出现的次数进行递归遍历。
1711

被折叠的 条评论
为什么被折叠?



