![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Uva
Uva
dancheng_work
在时间允许的情况下,源码是最好的开发文档。
展开
-
生成1~n的排列
#include #include using namespace std; int A[1000]; void print_permutation(int n, int * A, int cur){ if(n == cur){ //边界 for(int i = 0; i < n; i++){ cout<<A[i];原创 2017-02-18 13:05:24 · 310 阅读 · 0 评论 -
生成可重集的序列
#include #include using namespace std; int A[1000], P[1000]; void print_permutation(int n, int * P, int * A, int cur){ if(n == cur){ //边界 for(int i = 0; i < n; i++){原创 2017-02-18 13:22:28 · 368 阅读 · 1 评论 -
子集生成
1、增量构造法 注意:在枚举子集的增量法中,需要使用定序的技巧,避免同一个集合枚举两次,比如{1,2}和{2,1}。 实例: #include using namespace std; void print_subset(int n, int * A, int cur){ for(int i = 0; i < cur; i++) //只要其中有数,就需要输出原创 2017-02-18 17:42:57 · 244 阅读 · 0 评论 -
n皇后问题
八皇后位置,利用回溯法解决 直接利用回溯法: #include int n, tot = 0; int C[1000] = {0}; void search(int cur){ if(cur == n){ //边界 tot++; } else { for(int i = 0; i < n; i++){原创 2017-02-19 16:35:02 · 247 阅读 · 0 评论 -
UVa524
UVa524 输入正整数n,把整数1,2,3,···,n组成一个环,使得相邻两个整数之和均位素数。输出时从整数1开始逆时针排序。同一个环应恰好输出一次。n 样例输入: 6 样例输出: 1 4 3 2 5 6 1 6 5 2 3 4 枚举排列(比较费时间,跑到n = 16会超时) #include #include using namespace std; i原创 2017-02-20 10:13:20 · 488 阅读 · 0 评论 -
UVa129
如果一个字符串包含两个相邻的重复子串,则称他是“容易的串”,其他串称“困难的串”。例如,BB、ABCDACABCAB、ABCDACBD都是容易的串,而D、DC、ABDAB、CBABCBA都是困难的串。 输入正整数n和L,输出有前L个字符组成的、字典序第k小的困难的串。例如,当L=3时,前7个困难的串分别为A、AB、ABA、ABAC、ABACA、ABACAB、ABACABA。输入保证答案不超过80原创 2017-02-20 13:05:32 · 628 阅读 · 0 评论