题意:给出一些电脑的二维坐标,连接两个电脑所用网线长为它们之间的直线距离再加上16 feet。要求把所有电脑连成一个串,怎样连,使得所用网线最短,并且按从一端到另一端的顺序输出连接的两个电脑间的距离。
思路:很容易想到的就是暴力枚举,将所有电脑做一个全排列,求得总长最小值的那个。这里用的递归枚举、即回溯法,进行了剪枝优化。
第一次交WA了,重读题目、看别人题解,都没找到原因。看到别人的freo...
分类:
其他好文 时间:
2015-03-02 16:59:18
阅读次数:
160
题意:构造Pascal的排序程序。初看是写Pascal程序,不了解的以为会很难,但其实程序的大部分是固定的,直接printf就可以,主要在于写比较的if-else部分。
思路:看sample out可以大概知道程序的构成,其他部分直接输出,主要写比较的部分。比较的时候,可以看成两个集合,A是已排好序的,S是全集,cur是从左到右扫描S的当前位置。用递归写的,前半部分是当当前位置cur到达n时,即...
分类:
编程语言 时间:
2015-02-28 14:42:19
阅读次数:
261
题意:给定字符串的长度,以及汉明距离,求所有和全0字符串汉明距离为给定值的等长字符串,升序输出。
思路:长度n,汉明距离h,相当于n-h个0和h个1的序列,进行枚举全排列。
感觉这几题都是排列和子集相关的枚举额,推荐的题目没有其他的枚举或暴力求解的吗?感觉不是很好额~
Code:
#include
#include
void print_permutation(int n,int *P,...
分类:
其他好文 时间:
2015-02-27 15:15:16
阅读次数:
160
题意:输出一个排列的后继排列,如果是最大的降序排列,则输出没有后继。
思路:调用STL中的next_permutation()函数即可。不过这个函数在求后继时是一个循环状态,即全升序是全降序的后继,循环回来了。所以在调用之前判断一下是否为全降序序列即可。 感觉用这个函数没什么技术含量,有时间用纯C写一个。
Code:
#include
#include
#include
usi...
分类:
其他好文 时间:
2015-02-27 13:34:29
阅读次数:
113
题意:对输入的字符串,按字典序升序输出所有种排列。
思路:这个基础就是之前将到的枚举排列问题,只不过当时是整型,这里是字符型。
注意:一个是输出的时候每组数组后都要输出一个空行(虽然你去复制sample out会发现最后一组数据没空行,但程序里的确是包括最后一组数据后都有空行)
第二是因为这里是字符型,输出的时候直接按字符串输出即可,但是需要在排列数组的最末位加'\0'!还有,在最开始需要对...
分类:
其他好文 时间:
2015-02-27 13:33:47
阅读次数:
150
输入正数n,按字典序从小到大的顺序输出n个数的所有排列。两个序列的字典序大小关系等价于从头开始第一个不相同位置处的大小关系。
一、生成1~n的排列
思路:
void print_permutation(序列A,集合S)
{
if ( S 为空 ) 输出序列 A;
else 按照从小到大的顺序依次考虑 S 的每个元素 v
{
prin...
分类:
其他好文 时间:
2015-02-27 00:21:19
阅读次数:
174
题意:题目描述太简单了,简直需要猜题目。看别人的题解也知道题目意思。大致意思是,手里五张牌,可以弃0~5张,然后从牌堆的5张中拿最上面的同等数量纸牌,使得value最大。value的评价真的是要猜。。。依次为:
straight-flush 同花顺four-of-a-kind 炸弹full-house 满堂红 三张同点牌加上一对 flush 同花straight...
分类:
其他好文 时间:
2015-02-26 20:23:25
阅读次数:
244
子集生成:给定一个集合,枚举它所有可能的子集。(简单起见,这里假设集合中没有重复元素)
一、增量构造法
思路:一次选出一个元素放到集合中。
Code:
void print_subset1(int n, int *A, int cur)
{//增量构造法
for(int i=0;i<cur;++i)
printf("%d ",A[i]);
printf("\n");
...
分类:
其他好文 时间:
2015-02-26 14:59:40
阅读次数:
221
题意:有一组编码,用其中最少的位数来区分这些编码。
思路:相当于枚举一个集合的所有子集,然后选择符合要求的势最小的集合。
子集生成有三种方法,但每一种子集的生成都没有明显的规律,至少不是从1个元素、2个元素到n个元素这样的顺序生成的,所以还是要枚举出所有的子集才行。这里用的增量构造法来枚举子集。
Code:
#include
void print_subset(i...
分类:
其他好文 时间:
2015-02-26 13:26:43
阅读次数:
112
题意:给了公式,求A(m,n)。并不知道为什么被杭电分类塞进了dp专题,但是我一开始显然看到这个题就觉得给那个公式用函数递归一下答案肯定能出来了,只不过既然放在了dp专题里面估计这样暴力求解会TLE的吧(是的当时我还天真的以为真的是dp```),然后敲了一遍的确T了不出意料,但是在测试样例的时候我发...
分类:
其他好文 时间:
2015-02-13 22:26:15
阅读次数:
197