关于回溯与n个数的全排列
今天要讲的题目是全排列的问题:有1、2、3、...、n这样一个数列,要求输出其全排列。
那么,显然,这道题目非常之简单,用一个标志数组变量,标记数字的使用情况,然后根据它挑选数字即可。由于题目很简单,在这就不多说了,来看看代码:
#include<stdio.h>
int n;
int sum=;//统计方法数
int a[]={};//用于储存答案
int flag[]={};//所有数字的标志变量初始化为0
void out();//函数用于输出
void f(int k);//函数用于求解
int main()
{
scanf("%d",&n);
f();
return ;
}
void f(int k)
{
int i;
for(i=;i<=n;i++)
{
if(flag[i]==)//如果i没有被使用过
{
a[k]=i;//则选中i
flag[i]=;//标记i为已使用
if(k==(n-))//如果找到了所有n位数
out();//输出
else
f(k+);//否则继续寻找下一位
flag[i]=;//返回时还原现场
a[k]=;
}
}
}
void out()
{
int i;
sum++;//每执行一次该函数则说明有一个解
printf("%d:\n",sum);
for(i=;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
代码如有不足,欢迎指教!
关于回溯与n个数的全排列的更多相关文章
- 生成n个数的全排列【递归、回溯】
下面讨论的是n个互不相同的数形成的不同排列的个数.毕竟,假如n个数当中有相同的数,那n!种排列当中肯定会有一些排列是重复的,这样就是一个不一样的问题了. /*===================== ...
- LeetCode 31:递归、回溯、八皇后、全排列一篇文章全讲清楚
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天我们讲的是LeetCode的31题,这是一道非常经典的问题,经常会在面试当中遇到.在今天的文章当中除了关于题目的分析和解答之外,我们还会 ...
- 回溯法求n的全排列
代码如下: #include <iostream> #include <algorithm> #include <stdio.h> #include <cst ...
- P1096 4个数的全排列
题目描述 输入4个有序的个位数.按照字典序输出它们的全排列. 输入格式 输入四个数字a,b,c,d.(0<=a,b,c,d<10) 输出格式 输出它们的全排列.每个排列占一行.而且每个排列 ...
- 0到N数其中三个数的全排列
#include<iostream> using namespace std; int main(){ ; int count; count=; ;i<=N;i++) ;j<= ...
- 产生n个数全排列的算法
给定n个数{1...n},如何给出这n个数的全排列呢? 给定一个整数k,我们给它一个向左或向右的方向,k(->)或者k(<-),我们说k是可以移动的,如果它的方向指向一个相邻的比它小的数, ...
- LeetCode46 回溯算法求全排列,这次是真全排列
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode的26篇文章,我们来实战一下全排列问题. 在之前的文章当中,我们讲过八皇后.回溯法,也提到了全排列,但是毕竟没有真正写 ...
- Permutations(排列问题,DFS回溯)
Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...
- 回溯法 | n皇后问题
今早上看了一篇英语阅读之后,莫名有些空虚寂寞冷.拿出算法书,研读回溯法.我觉得n皇后问题完全可以用暴力方式,即先对n个数进行全排列,得到所有结果的下标组合,问题规模为n!. 全排列花了比较久的时间才编 ...
随机推荐
- 扩展django的User的部分方法
这做项目时发现django自带的User中的字段不够用,默认的auth_user表总共只有11个字段,如果需要更多的字段该怎么办,在网上搜了一下,有这么几种方法. 1. 直接修改django 源码,修 ...
- C#为什么不采用多继承:
C#为什么不采用多继承: 1.继承从来未被广泛使用. 2.多继承带来的问题往往多于其解决的问题. 3.多继承会引起潜在的歧义. C#核心编程
- freeswitch:error C2220: 警告被视为错误 - 没有生成“object”文件
项目 -> 属性-> 配置属性 -> c/c++ -> 将警告视为错误 -> 否 参考: http://www.cnblogs.com/kex1n/archive/201 ...
- 数据导出到excel
jsp页面: 数据table: <form action="/export.jsp" method="post" id="expform&quo ...
- jQuery 的三种获取值的方式
本节内容主要介绍的是如何使用jQuery中的.html(),.text()和.val()三种方法,用于读取,修改元素的html结构,元素的文本内容,以及表单元素的value值的方法.jQuery中为我 ...
- PKu 2195
//PKu 2195 回家 By Loli_con Enail : Loli_con@outlook.com /* 题目叙述 ========= 在一个网格图中,有n个人和n个房子.每一个单位时间,每 ...
- 认识Java
java出生地:SUN Microsystems Inc<开源> -SUN : Standford University Network java之父:James Gosling ...
- Prime Ring Problem
Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ... ...
- Java 查漏补缺
摘自<老马说编程> 计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算 Java中不支持直接写二进制常量,比如,想写二进制形式的11001,Java中不能直接写,可以在前面补0,补 ...
- 上传8m以上文件,报错误 101 (net::ERR_CONNECTION_RESET):连接已重置
经过多方查找,原来是因为我使用了nginx反响代理的原因.nginx在做反向代理时,默认的可以上传的附件大小是1M,可以通过设置nginx.conf中的client_max_body_size进行更改 ...