求一个全排列函数: 如p([1,2,3])输出:[123],[132],[213],[231],[312],[321]. 求一个组合函数 如p([1,2,3])输出:[1],[2],[3],[1,2],[2,3],[1,3],[1,2,3]
深度搜索的代码:
#include<stdio.h>
#include<string.h>
const int Max = ;
int n;
int a[Max];
bool b[Max];
void Dfs(int num)
{
if(num==n)
{
for(int i=;i<n;i++)
printf("%d",a[i]);
printf("\n");
}
else
{
for(int i=;i<=n;i++)
if(!b[i])
{
b[i]=true;
a[num]=i;
Dfs(num+);
b[i]=false;
}
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(b,false,sizeof(b));
Dfs();
}
return ;
}
采用字典序的排序的方法 :
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/13/2589738.html
思路:设一个数组a,数组a中的数必须是0和1当中的一个,将待组合数每一个数关联到数组中,接着按照二进制的规则,对数组a构建成的二进制数一步一步加1,在这个过程中,数组a每次构建一个二进制的数,对应数组为1的待组合数集合当中的数立即输出,构成一次组合,依次类推。
#include<stdio.h>
#include<math.h>
int main()
{
int n,bit;
int i,j,m;
while(scanf("%d",&n)!=EOF)
{
m=pow(,n);
for(i=;i<m;i++)
{
j=i;
bit=;
while(j)
{
if(j%)printf("%d",bit);
j/=;
bit++;
}
printf("\n");
}
}
return ;
}
采用字典序的排序的方法 :
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/13/2589738.html
求一个全排列函数: 如p([1,2,3])输出:[123],[132],[213],[231],[312],[321]. 求一个组合函数 如p([1,2,3])输出:[1],[2],[3],[1,2],[2,3],[1,3],[1,2,3]的更多相关文章
- LeetCode第[46]题(Java):Permutations(求所有全排列) 含扩展——第[47]题Permutations 2
题目:求所有全排列 难度:Medium 题目内容: Given a collection of distinct integers, return all possible permutations. ...
- python 全栈开发,Day12(函数的有用信息,带参数的装饰器,多个装饰器装饰一个函数)
函数的执行时,*打散.函数的定义时,*聚合. from functools import wraps def wrapper(f): # f = func1 @wraps(f) def inner(* ...
- LeetCode 31 Next Permutation(下一个全排列)
题目链接: https://leetcode.com/problems/next-permutation/?tab=Description Problem :寻找给定int数组的下一个全排列(要求 ...
- NextPermutation,寻找下一个全排列
问题描述:给定一个数组是一个全排列,寻找下一个全排列.例如123->132, 321->123, 115->151. 算法分析:从后往前寻找顺序,找到后从往前寻找第一个大于当前元素, ...
- python基础练习题(题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少)
day13 --------------------------------------------------------------- 实例021:猴子偷桃 题目 猴子吃桃问题:猴子第一天摘下若干 ...
- 【Go入门教程3】流程(if、goto、for、switch)和函数(多个返回值、变参、传值与传指针、defer、函数作为值/类型、Panic和Recover、main函数和init函数、import)
这小节我们要介绍Go里面的流程控制以及函数操作. 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.Go中流程控制分三大类:条件判断,循环控制和 ...
- C++函数重载实现的原理以及为什么在C++中使用用C语言编译的函数时,要在函数名称前面加上extern "C"声明
C++相对于C语言而言支持函数重载是其极大的一个特点,相信在使用C语言的时候大家如果要写一个实现两个整型数据相加的函数还要写一个浮点型数据相加的函数,那么这两个函数的名字绝对不可以一样,这样无疑在我们 ...
- javascript柯里化及组合函数~
大家是不是看我上篇博文有点蒙.用的的curry和compose是什么鬼,怎么那么神奇.上篇博文也是主要用到了这两个函数.那今天我们来聊一下curry和compose,这两个东西是函数式编程很重要的东西 ...
- gets_s()函数的参数太少,strcpy_s():形参和实参 2 的类型不同,等c函数在Visual Studio上出现的问题, get()函数和scanf()读取字符串的区别,栈的随机性
首先,这些C函数,在VS上要加_s后缀的原因是,这些函数存在字符串越界等问题,可以参考这篇文章,https://blog.csdn.net/silleyj/article/details/854540 ...
随机推荐
- FPGA中如何实现除法?
摘自:<xilinx FPGA 开发实用教程> 1)被除数重复的减去除数,直到检测到余数小于除数为止,优点:对于除数与被除数相差较小的情况下合适 2)通过如下图片方式实现+状态机.优点:挺 ...
- Could not resolve placeholder
使用spring的<context:property-placeholder location="/WEB-INF/redis.properties"/>读取prope ...
- nodeJs爬虫获取数据
var http=require('http'); var cheerio=require('cheerio');//页面获取到的数据模块 var url='http://www.jcpeixun.c ...
- ios应运程序的五种状态
ios应运程序的五种状态即转化 从apple的官方文档扣下来的 5状态: Not running The app has not been launched or was running but w ...
- 【Symmetric Tree】cpp
题目: Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). F ...
- 安装Netsharp演示插件
阅读本文请先阅读Netsharp下载及环境搭建 Netsharp提供了DEMO程序,DEMO完成的功能是Netsharp文章系列中的Netsharp快速入门系列中介绍的功能,DEMO是以Netshar ...
- SQL 语法 Join与Union
问题描述: Join与Union使用 问题解决: Join连接,可以分为: tableA如下: tableB如下: 1.1.Inner Join SELECT * FROM TableA INNER ...
- shell编程之echo命令
Linux echo命令不能显示文件中的内容.显示字符串或者变量功能说明:显示文字.语 法:echo [-ne][字符串]或 echo [--help][--version]补充说明:echo会将输入 ...
- BZOJ2694: Lcm
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2694 题解:令f[i]表示i是否有平方因子,则f[i]是积性函数,mu[i]表示莫比乌斯函数. ...
- Ubuntu 字体修改以及字体的相关知识 分类: ubuntu 2014-06-19 21:46 81人阅读 评论(0) 收藏
Ubuntu chrome 字体修改 打开任意一张含有输入框的网页,比如Google首页,然后右键点击"搜索框"会拉出一个菜单,我们这样选: 拼音检查选项==>语言设置==& ...