组合算法实现C语言,非递归
2015-09-23 14:29
225 查看
计算机程序设计艺术,4A组合算法J的实现:
void combineJ(int n, int t)
{
//C(n,t)
int c[COMBINE_MAXN]; //c[0] is not used
int j, i;
// Initializing
for (j = 1; j <= t; j++)
{
c[j] = j - 1;
}
c[t + 1] = n;
c[t + 2] = 0;
//main loop
for (;;)
{
//visit
for (i = t; i >= 1; i--)
{
printf("%d", c[i]);
}
printf("\n");
//Find j
j = 1;
while (c[j] + 1 == c[j + 1])
{
c[j] = j - 1;
j++;
}
//Done?
if (j > t)
{
break;
}
c[j]++;
}
}
void combineJ(int n, int t)
{
//C(n,t)
int c[COMBINE_MAXN]; //c[0] is not used
int j, i;
// Initializing
for (j = 1; j <= t; j++)
{
c[j] = j - 1;
}
c[t + 1] = n;
c[t + 2] = 0;
//main loop
for (;;)
{
//visit
for (i = t; i >= 1; i--)
{
printf("%d", c[i]);
}
printf("\n");
//Find j
j = 1;
while (c[j] + 1 == c[j + 1])
{
c[j] = j - 1;
j++;
}
//Done?
if (j > t)
{
break;
}
c[j]++;
}
}
相关文章推荐
- C语言-----二维字符串数组内存图解
- C语言-----一位维指针数组的内存图解
- 【读书笔记:C++ primer plus 第六版 中文版】第18章 探讨C++新标准
- c++笔记
- 【读书笔记:C++ primer plus 第六版 中文版】第17章 输入、输出和文件
- 重载和多态之间的关系?!(C++初学者)
- C语言-----冒泡排序
- 【C/C++学院】0815-函数包装器/CPP类型转换/函数模块/动态数组
- 子类赋给父类(c++初学者)
- Eclipse下编写C++程序——CDT环境搭建
- C++初学者之RTTI
- C语言ADT(抽象数据类型编程)
- C++ 编译器的函数名修饰规则
- PAT (Basic Level) Practise (中文)1045. 快速排序(25) C语言
- Cassandra数据库用C++进行了重写,比原来快10倍!
- PAT (Basic Level) Practise (中文)1044. 火星数字(20) C语言
- PAT (Basic Level) Practise (中文)1043. 输出PATest(20) C语言
- PAT (Basic Level) Practise (中文)1042. 字符统计(20) C语言
- PAT (Basic Level) Practise (中文)1041. 考试座位号(15) C语言
- 有关c++de笔试