{C语言算法}排列组合
2013-03-17 17:46
465 查看
#include <stdio.h>
#include <conio.h>
#define NDEBUG
#include <assert.h>
int print_flag(int flag[],int data[])
{
int i;
for(i=0;i<9;i++) {
#if 1
if(1==flag[i])
printf("%d ",data[i]);
#else
printf("%d ",flag[i]);
#endif
}
putchar('\n');
#if 0
sleep(1);
#endif
}
int main(void)
{
int data[]={0,1,2,3,4,5,6,7,8};
int flag[9]={0}; //使用标志位法
int temp[5]={0}; //默认为0
int i=0,j=0,k=0; //默认为0
while(1)
{
//------ kernel ------
flag[0]++;
for(i=0;i<9;i++)
{
if(flag[i]==2){
flag[i]=0;
if(i<8)
flag[i+1]++;
}
}
//---------------------
print_flag(flag,data);
k++; //count
for(i=0,j=0;i<9;i++)
if(flag[i]==1)
j++;
if(j==9) //共9种排列
break;
}
printf(">>%d",k);
getch();
return 0;
}
#include <conio.h>
#define NDEBUG
#include <assert.h>
int print_flag(int flag[],int data[])
{
int i;
for(i=0;i<9;i++) {
#if 1
if(1==flag[i])
printf("%d ",data[i]);
#else
printf("%d ",flag[i]);
#endif
}
putchar('\n');
#if 0
sleep(1);
#endif
}
int main(void)
{
int data[]={0,1,2,3,4,5,6,7,8};
int flag[9]={0}; //使用标志位法
int temp[5]={0}; //默认为0
int i=0,j=0,k=0; //默认为0
while(1)
{
//------ kernel ------
flag[0]++;
for(i=0;i<9;i++)
{
if(flag[i]==2){
flag[i]=0;
if(i<8)
flag[i+1]++;
}
}
//---------------------
print_flag(flag,data);
k++; //count
for(i=0,j=0;i<9;i++)
if(flag[i]==1)
j++;
if(j==9) //共9种排列
break;
}
printf(">>%d",k);
getch();
return 0;
}
相关文章推荐
- C语言实现的排列组合问题的通用算法、解决方法
- 浅谈c语言中一种典型的排列组合算法
- c语言实现排列组合算法问题
- c语言实现排列组合算法问题
- c语言实现排列组合算法问题
- 基础算法之排列组合生成算法
- 33选6算法:M个数N个为一组,无重复的排列组合
- 寻最优数字筛选算法--找出 “排列数列“ 对应的 “组合数列“
- java组合排列算法
- 排列组合算法-----使用递归
- 我理解的剑指offer----字符串的全排列和组合算法
- 字符串的全排列和组合算法
- python 排列组合算法
- PHP实现的简单排列组合算法应用示例
- 电商项目SKU的排列组合算法--js版
- 字符数组全排列组合算法汇总
- 排列算法的C语言实现
- 算法 全排列问题,组合问题,子集问题
- 高效率的排列组合算法
- [算法] 求排列组合: 从n个数中任选m个数组成一个新数