关于各种排列(dfs)
代码一:数字有重复:
#include <cstdio>
int n,m,a[],arr[]={,,,};
void dfs(int v){
if(v >= n){
for(int i = ;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return ;
}
for(int i = ; i<m;i++){
a[v] = arr[i];
dfs(v+);
}
}
int main(){
while(scanf("%d%d",&n,&m)==){
dfs();
}
}
答案:
代码二:含数组排列,数字无重复:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Node{
int m[];
};
int cmp(Node a,Node b){
for(int i=;a.m[i];i++){
if(a.m[i]==b.m[i])continue;
if(a.m[i]<b.m[i])return ;
else return ;
}
}
int mark[],num[],t;
Node pt[];
int n;
void dfs(int k){
if(k>=n){
for(int i=;i<k;i++)pt[t].m[i]=num[i];
t++;
return ;
}
for(int i=;i<=n;i++){
if(!mark[i]){mark[i]=;
num[k]=i;
dfs(k+);
mark[i]=;
}
}
}
int main(){
while(~scanf("%d",&n)){t=;
memset(mark,,sizeof(mark));
dfs();
sort(pt,pt+t,cmp);
for(int i=;i<t;i++){
for(int j=;j<n;j++)printf("%d ",pt[i].m[j]);
puts("");
}
}
return ;
}
答案:
全排列:南阳oj组合数:
#include<stdio.h>
int m[];
int n,k;
void dfs(int top,int flot){
if(flot>=k){
for(int i=;i<flot;i++)printf("%d ",m[i]);
puts("");return ;
}
for(int i=top;i>;i--){
m[flot]=i;
dfs(i-,flot+);
}
return ;
}
int main(){
while(~scanf("%d%d",&n,&k)){
dfs(n,);
}
return ;
}
答案:
关于各种排列(dfs)的更多相关文章
- 奇偶交错排列(DFS)
Description 一个1-n1−n的排列满足所有相邻数字奇偶性不同,那么称该排列为奇偶交错排列. 按字典序输出1-n1−n的所有奇偶交错排列. Input 输入一个整数n( 2 \le n \l ...
- DFS实现排列组合
所谓排列,是指从给定的元素序列中依次取出元素,需要考虑取出顺序.比如,取出元素3, 5,因取出顺序的不同,则形成的序列{3, 5}与{5, 3}是不同的排列序列.对于长度为n的元素序列取出k个元素,则 ...
- nyoj 19擅长排列的小明 (DFS)
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...
- dfs 生成排列和组合
利用深度优先搜索的性质可以方便的生成n的排列和组合,但是生成组合时每个组合里面元素的个数必须事先确定,以前以为生成组合跟排列一样到n时就可以回溯,直到今天做了某题之后才发现那是错的,那样做生成不了所有 ...
- HDU-1716 排列2 (DFS)
排列2 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...
- 蓝桥杯 - 数字排列(今有7对数字) - [两种不同的DFS思路]
今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行.要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字.如下就是一个符合要求的排列: 171264 ...
- hdu 1716 排列2(DFS搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1716 排列2 Time Limit: 1000/1000 MS (Java/Others) Me ...
- noip 1995 灯的排列问题 排列组合 DFS
题目描述 设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……Nk(k表示不同颜色灯的个数). 放灯时要遵守下列规则: ①同一种颜色的灯不能分开: ②不同颜 ...
- DFS排列组合问题
这四个使用DFS来求解所有组合和排列的例子很有代表性,这里做一个总结: 1.不带重复元素的子集问题 public ArrayList<ArrayList<Integer>> s ...
随机推荐
- 剑指offer-面试题4.替换空格
题目:请实现一个函数,把字符串中的每个空格都替换成"%20".例如输入"We are happy." 则输出"We%20are%20happy.&qu ...
- HDU4762(JAVA大数)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- Hadoop中SequenceFile的使用
1.对于某些应用而言,须要特殊的数据结构来存储自己的数据. 对于基于MapReduce的数据处理.将每一个二进制数据的大对象融入自己的文件里并不能实现非常高的可扩展性,针对上述情况,Hadoop开发了 ...
- 分类: LINUX apache 访问设置配置
分类: LINUX 在一次面试的时候被问到apache访问控制的问题.由于以前对apache的访问控制都是通过iptalbes来实现的,没有实际在apache上操作过访问控制.所以只知道个大概: 在主 ...
- Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent
修改pom.xml文件,添加以下属性 <project> ... <properties> <project.build.sourceEncoding>UTF-8& ...
- stagefright框架(一)Video Playback的流程
在Android上,預設的多媒體框架(multimedia framework)是OpenCORE. OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相對來說較為穩定:但是其缺點 ...
- 分布式日志收集系统- Cloudera Flume 介绍
Flume是Cloudera提供的日志收集系统,具有分布式.高可靠.高可用性等特点,对海量日志采集.聚合和传输, Flume支持在日志系统中定制各类数据发送方, 同时,Flume提供对数据进行 ...
- SFTP CONFIGURATION IN FLASHFXP PROGRAM
This is a brief guide on how to configure the FlashFXP FTP client to log on to the domain web space ...
- django学习笔记二:一个项目多个App项目搭建
django充许在一个项目中存在多个app,如一个大门户网站中可以包含论坛,新闻等内容,其中每一个模块称之为一个App,也可以理解为一个个独立的小型项目最终集成在一个门户网站中最终呈现给用户 本次测试 ...
- 天坑 之 Eclipse J2EE Preview 运行正确项目一直显示http 404
昨天下载了几个新Demo学习,结果不知道改了哪里,导致运行原先自己写的项目(JSP+Servlet+JDBC)(这理论上不会出什么大的问题吧?这么底层),结果莫名其妙的出现Http 404. 搞的我一 ...