博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
枚举法
阅读量:4703 次
发布时间:2019-06-10

本文共 1186 字,大约阅读时间需要 3 分钟。

(⊙o⊙),今天和爸妈一起买电视机去了,很interesting,早上看的东西应该还没忘掉 (^-^)V

 

枚举集合:

一般都用的二进制思想,& | ^ 就分别对应的是 交,并,对称差。枚举每一个子集,就是一个简单的循环变量 i ,而 i 怎么提取每一个元素,就是 s & (1<<i) ,循环遍历。

1 /* 2 集合的枚举 3 */ 4  5 #include 
6 7 using namespace std; 8 9 int cnt = 0;10 11 void print_subset(int n,int s) // s 为 枚举的集合,n 为 总集合个数12 {13 for(int i=0;i
View Code

 

枚举排列:

这个还是挺有代表性的,单纯的枚举排列完全可以用库函数,其思想还是有很大的作用的,就是一个解答树的概念,从当前的一个状态转到下一个状态的一个递归写法。

1 /* 2 1~n 的排列枚举 3 */ 4  5 #include 
6 7 using namespace std; 8 9 void print_permutation(int n,int *A,int cur) {10 if(cur==n) {11 for(int i=0;i
View Code

 

当然有重复的元素,就要看之前用了多少,就类似于一个标记。

1 #include 
2 3 using namespace std; 4 5 void print_permutation(int n,int* P,int* A,int cur) { //n 为 p 的长度 6 if(cur==n) { 7 for(int i=0;i
View Code

 

然后系统库函数。

1 #include 
2 3 using namespace std; 4 5 int main() 6 { 7 8 int A[5] = {
5,4,3,2,1}; 9 10 sort(A,A+5);11 12 do {13 for(int i=0;i<5;i++)14 printf("%d ",A[i]);15 puts("");16 }while(next_permutation(A,A+5));17 18 return 0;19 }
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/6294936.html

你可能感兴趣的文章
mybatis_04 resultType和resultMap区别
查看>>
VS2013环境问题
查看>>
在Android源码下编译jni所需要知道的事~
查看>>
JavaScript实现Apache .htaccess 转化nginx生成器工具-toolfk程序员工具网
查看>>
Linux 下安装nginx的总结 (之前写的有问题))
查看>>
[转]微服务架构的理论基础 - 康威定律
查看>>
A1064. 排名计算
查看>>
ubuntu linux上配置samba服务器
查看>>
sdk 获取 vue 实例
查看>>
资源列表
查看>>
如何实现清浮动(转载)
查看>>
【Java程序】约瑟夫环
查看>>
借助第八代智能英特尔® 酷睿™ i7 处理器和 Unreal Swarm* 的强大性能快速构建光照...
查看>>
View Controller 生命周期的各个方法的用法
查看>>
去掉iview Modal组件中的取消和确定按钮
查看>>
媲美jQuery的JS框架----AngularJS(二)
查看>>
【译】Asp.Net 导出 Excel 数据的9种方案
查看>>
Python 快速统计数据的去重数和去重数据
查看>>
【心情随记】收拾屋子,整理心态
查看>>
课件动画做的牛不牛,看你有它没它!
查看>>