n全排列输出:int WPermutation(int num, bool bRepeat)
num表示num全排列
bRepeat标志是否产生重复元素的序列。
int Permutation(int n, int* A, int cur, bool bRepeat)
{
static int number = 0;
if(cur == n)
{
number++;...
分类:
其他好文 时间:
2014-08-26 19:47:06
阅读次数:
185
题目:给你五个数字,在他们中间加上'+','-','*',构成结果23,问能否成功。
分析:搜索,24点类似物。
首先,求出五个数的全排列;
然后,按顺序枚举三种运算,计算结果,判断即可。
说明:注意优先级,左边的高。
#include
#include
#include
using namespace std;
int dat...
分类:
其他好文 时间:
2014-08-26 19:40:38
阅读次数:
201
n全排列输出:int WPermutation(int num, bool bRepeat)num表示num全排列bRepeat标志是否产生重复元素的序列。int Permutation(int n, int* A, int cur, bool bRepeat) { static int numbe...
分类:
其他好文 时间:
2014-08-26 19:19:16
阅读次数:
228
http://acm.hdu.edu.cn/showproblem.php?pid=2583
题意: 输入 n m 问n组成的全排列中 有m个小于号的排列的个数
思路:
我们设
n(
假如
a[1],a[2],...,a[n-1],是n-1个数的排列,有 k个'
把 n插入,有n个位置可以插入,
把 n插入到a[1]的前面, '
如 a[i]
插入到其他位置 '
因此...
分类:
其他好文 时间:
2014-08-26 17:19:56
阅读次数:
186
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=139思路:康托展开式的典型应用,康托展开式是什么呢,举个例子。1,2,3这三个数的全排列共有六种,那么按照字典的顺序,『3,2,1』 这个序列是在第几个呢。康托是这样想的: 首先从第一位.....
分类:
其他好文 时间:
2014-08-25 11:24:14
阅读次数:
237
package algorithm;
public class SortAll {
public static void main(String[] args) {
char buf[] = {'1','2','3','4','5'};
perm(buf,0,buf.length-1);
}
private static void perm(char[] buf, int sta...
分类:
编程语言 时间:
2014-08-22 17:56:39
阅读次数:
233
前一段时间总结了全排列问题的几种递归解法,今天再总结一下如何通过对系统栈行为的模拟来非递归的实现全排列问题。 我们用一个数组stack[]来表示一个栈,用一个top指针来表示栈顶,用一个flags[]数组来标示每一个数字的可用性;用i来表示当前的状态。 初始状态top=0;i=-1;f...
分类:
其他好文 时间:
2014-08-21 22:31:37
阅读次数:
206
看见别人写出来美丽有用的代码,最终下定决心好好学习算法,在这里记录下自己学习的成果。前两天看到数组的全排列,于是自己照着别人的想法实现了一下,感觉自己理解了,有点小高兴,记载一下。/* * 数组的全排列*/public class myAllSort { public static void sor...
分类:
其他好文 时间:
2014-08-20 16:02:52
阅读次数:
207
import java.util.Scanner;
public class FullArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();...
分类:
其他好文 时间:
2014-08-20 12:37:22
阅读次数:
162
1 什么是全排列:例如给出字符串abc: 其全排列为:abc bca cba acb bac cab; 对于acc则全排列为 acc cac cca
2 下面看一下非递归的实现方法:以1234 为例从右向左找相邻递增(严格递增)的数对: 34 满足条件,把3记为一个交换点。 在从右向左找第一个大于第一个交换点的数为4作为第二个交换点,交换后得:1243;然后把第一个交换点后的序列逆序。...
分类:
其他好文 时间:
2014-08-19 16:42:24
阅读次数:
265