数据范围较小,暴力枚举全排列就行
//
// main.cpp
// uva216
//
// Created by Fangpin on 15/3/8.
// Copyright (c) 2015年 FangPin. All rights reserved.
//
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2015-03-09 17:39:25
阅读次数:
125
问题开始之前, 首先介绍一下利用C++ 头文件中的next_permutation()和pre_permutation产生0, 1, 2, 3, ... N - 1全排列。 这两个函数
产生全排的办法是通过字典序的原理。 next_permutation() 按照递增的办法产生字典序的下一个(唯一确定的, 与当前的排列之间不能夹杂了任何可行的
排列)。 prev_permutation() 产...
分类:
其他好文 时间:
2015-03-08 17:21:05
阅读次数:
275
一:简介
(1)回溯法 又称试探法
回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法;基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。
适用场景:当遇到某一类问题时,它的问题可以分解,但是又不能得出明确的动态规划或是递归解法,此时可以考虑用回溯法解决此类问题。回溯法的优点在于其程序结构明确,可读性强,易于理解,而且通过对问题的分...
分类:
编程语言 时间:
2015-03-08 15:42:56
阅读次数:
761
题意:参考之前讲回溯法的最后一个问题。
思路:枚举全排列,考察每一种排列下的结果。 也可以进行剪枝优化,也是参见之前讲回溯法的部分。
这里我是用二维数组g来存边关系,但顶点还是单独保存在一个数组里,然后排序,然后求排列。
这题居然交了9次,1CE1TLE1AC6WA,CE的原因是没有包含cstring,在本地没包含可以。。。TLE原因是没有注释掉freopen。WA的原因之前一直以为是...
分类:
其他好文 时间:
2015-03-07 20:02:45
阅读次数:
315
生成字典续序列。
//
// main.cpp
// 10098_1
//
// Created by Fangpin on 15/3/7.
// Copyright (c) 2015年 FangPin. All rights reserved.
//
#include
#include
#include
#include
using namespace std;
char s...
分类:
其他好文 时间:
2015-03-07 15:45:37
阅读次数:
141
引言对一个给定数据进行全排列,在各种场合经常会用到。组合数学中,生成全排列的方法有很多,卢开澄老师的《组合数学》中就介绍了三种:序数法,字典序法,临位互换法等。其中以字典序法由于算法简单,并且使用的时候可以依照当前状态获取下一个状态,直到所有排列全部完成,方便在程序中随要随用,应用比较广泛,STL中...
分类:
编程语言 时间:
2015-03-05 14:16:40
阅读次数:
1289
擅长排列的小明
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。
输入第一行输入整数N(1
每组测试...
分类:
其他好文 时间:
2015-03-04 14:43:11
阅读次数:
124
题意:给一个偶数N。构造出一个矩阵。满足:主对角线上全为0。每一行是0~N-1的一个全排列。矩阵关于主对角线对称。思路:觉得是智商题,,,,看完题解后觉得不难,但是我就是没想出来。只想到了前面一部分。哎观察力,,,,,例:N=6构造:1234523451345124512351234满足条件。现在每...
分类:
其他好文 时间:
2015-03-03 21:58:56
阅读次数:
183
题意:GTY有n个朋友,站成一排,每个人有一个特征值ai。有m个询问。每次询问给两个数L,R。问你[L,R](即aL...aR)是否是1..(R-L+1)的一个全排列。是输出YES,否则输出NO思路:先判断是否segma(a[L,R])是否等于(R-L)*(R-L+1)/2。记录每一个ai上一次的位...
分类:
其他好文 时间:
2015-03-02 22:15:18
阅读次数:
175
题意:给出一些电脑的二维坐标,连接两个电脑所用网线长为它们之间的直线距离再加上16 feet。要求把所有电脑连成一个串,怎样连,使得所用网线最短,并且按从一端到另一端的顺序输出连接的两个电脑间的距离。
思路:很容易想到的就是暴力枚举,将所有电脑做一个全排列,求得总长最小值的那个。这里用的递归枚举、即回溯法,进行了剪枝优化。
第一次交WA了,重读题目、看别人题解,都没找到原因。看到别人的freo...
分类:
其他好文 时间:
2015-03-02 16:59:18
阅读次数:
160