题目:http://codevs.cn/problem/1283/分析:主要就是在每个判定上节省时间。一般的做法是开个数组记录每个数字出没出现,然后每次读入一个数字就以他为中间向两边扩展直到两个对称的指针指向的数都出现了。但实际上这是全排列,所以x的左边数字有一个出现了且对应的右边位置有意义,那么这...
分类:
其他好文 时间:
2014-10-17 02:10:13
阅读次数:
251
全排列问题。常用的排列生成算法有序数法、字典序法、换位法(Johnson(Johnson-Trotter)、轮转法以及Shift cursor cursor* (Gao & Wang)法。
【题目】
Given a collection of numbers, return all possible permutations.
For example,
[1,2,3] have...
分类:
其他好文 时间:
2014-10-16 23:05:23
阅读次数:
302
题目大意:给定n个数字,求这些数字的全排列中有多少数能被d整除
令f[i][j]为状态为i,余数为j的方案数
枚举最高位转移
小心爆int
#include
#include
#include
#include
using namespace std;
int n,d,ans,f[1<<10][1<<10],digit[1<<10],tens[10],cnt[10],factorial[1...
分类:
其他好文 时间:
2014-10-16 10:38:52
阅读次数:
131
问题来自《Linux C一站式编程》,是个挺有意思的题目。2、定义一个数组,编程打印它的全排列。比如定义:#define N 3 int a[N] = { 1, 2, 3 };则运行结果是:$ ./a.out1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 3 1 2程序的主要思路是:把第...
分类:
其他好文 时间:
2014-10-16 03:25:51
阅读次数:
302
一共4个数字,共需要3个运算符,可以构造一个二叉树,没有子节点的节点的为值,有叶子节点的为运算符例如数字{1, 2, 3, 4},其中一种解的二叉树形式如下所示:因此可以遍历所有二叉树可能的形式,4个数的全排列,从4种运算符中挑选3种运算符(运算符可以重复)核心步骤1:需要遍历所有二叉树的可能...
题意:给出一个排列,其中的一些数字不小心给擦掉了。但是知道这个序列满足 i
分析:很简单很暴力,暴力填入擦掉的值,然后看有多少对元素,然后比较就好。
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include ...
分类:
其他好文 时间:
2014-10-15 00:28:39
阅读次数:
172
题目1:打印从1到最大n位数的所有数字。比如n是3,则打印1,2,3,4...999。题目2:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能值出现的概率。----------------对于题目1,由于n的值可能会很大,所以直接print是不行的,没有一个数据类型可以...
分类:
编程语言 时间:
2014-10-14 23:19:09
阅读次数:
258
对abc三个字符进行全排列的结果是abc,acb,bac,bca,cab,cba。一种实现思路可以描述如下:step1,确定第一位的字符,可以是a,b或者c。step2,第一个字符确定之后,对剩余的字符求全排列。C++实现如下:void Permutation(char* chars,char* b...
分类:
编程语言 时间:
2014-10-12 19:09:08
阅读次数:
202
题目链接:http://poj.org/problem?id=1731思路: 含有重复元素的全排列问题;元素个数为200个,采用暴力枚举法。代码:#include #include using namespace std;const int MAX_N = 200 + 10;void PrintP....
分类:
其他好文 时间:
2014-10-12 03:47:57
阅读次数:
218
题目链接:http://poj.org/problem?id=1256思路: 该题为含有重复元素的全排列问题;由于题目中字符长度较小,采用暴力法解决。代码如下:#include #include using namespace std;const int MAX_N = 20;char P[MAX....
分类:
其他好文 时间:
2014-10-12 02:56:48
阅读次数:
136