45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:回溯法打印方法介绍

回溯法打印方法介绍

2016-09-01 07:26:08 来源:www.45fan.com 【

回溯法打印方法介绍

一个全排列的递归算法,非常的简洁,转载自天极网

回溯法打印方法介绍#include<stdio.h>

回溯法打印方法介绍

回溯法打印方法介绍
voidprint_it(intn,intarr[]);

回溯法打印方法介绍
voidarrange_all(intsize,intarr[],intpos);

回溯法打印方法介绍

回溯法打印方法介绍
intmain()

回溯法打印方法介绍回溯法打印方法介绍
{

回溯法打印方法介绍回溯法打印方法介绍
inta[5]={1,2,3,4,5};

回溯法打印方法介绍arrange_all(
5,a,0);

回溯法打印方法介绍
return0;

回溯法打印方法介绍}

回溯法打印方法介绍回溯法打印方法介绍/*

回溯法打印方法介绍函数名:voidarrange_all(intsize,intarr[],intpos)

回溯法打印方法介绍描述:打印所有排列

回溯法打印方法介绍参数:

回溯法打印方法介绍size要排列的数据个数

回溯法打印方法介绍arr[]排列存放的数组

回溯法打印方法介绍pos当前排列位置

回溯法打印方法介绍
*/

回溯法打印方法介绍voidarrange_all(intsize,intarr[],intpos)

回溯法打印方法介绍回溯法打印方法介绍
{

回溯法打印方法介绍
inti,tmp;

回溯法打印方法介绍回溯法打印方法介绍
if(pos+1==size)/*如果已经排到最后*/

回溯法打印方法介绍回溯法打印方法介绍{

回溯法打印方法介绍回溯法打印方法介绍print_it(size,arr);
/*打印数组*/

回溯法打印方法介绍return;

回溯法打印方法介绍}

回溯法打印方法介绍回溯法打印方法介绍for(i=pos;i<size;i++)/*对当前位置后的所有位置排列*/

回溯法打印方法介绍回溯法打印方法介绍{

回溯法打印方法介绍回溯法打印方法介绍tmp
=arr[pos];/*交换位置*/

回溯法打印方法介绍arr[pos]=arr[i];

回溯法打印方法介绍arr[i]
=tmp;

回溯法打印方法介绍回溯法打印方法介绍
/*递归,继续后面的调用*/

回溯法打印方法介绍arrange_all(size,arr,pos+1);

回溯法打印方法介绍回溯法打印方法介绍
/*在交换回来,保持原有的排列次序*/

回溯法打印方法介绍tmp=arr[pos];

回溯法打印方法介绍arr[pos]
=arr[i];

回溯法打印方法介绍arr[i]
=tmp;

回溯法打印方法介绍}

回溯法打印方法介绍}

回溯法打印方法介绍

回溯法打印方法介绍
voidprint_it(intn,intarr[])

回溯法打印方法介绍回溯法打印方法介绍
{

回溯法打印方法介绍
inti;

回溯法打印方法介绍static
intcnt=0;

回溯法打印方法介绍printf(
"%04d: ",++cnt);

回溯法打印方法介绍
for(i=0;i<n;i++)

回溯法打印方法介绍printf(
"%2d",arr[i]);

回溯法打印方法介绍printf(
" ");

回溯法打印方法介绍}

回溯法打印方法介绍
 

本文地址:http://www.45fan.com/a/question/70637.html
Tags: 打印 排列 回溯
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部