c语言全排列算法

作者&投稿:可怡 (若有异议请与网页底部的电邮联系)

C语言 求此全排列递归算法解析
used数组是全局变量有隐含初值0;关于全排列的算法你可以理解为深搜加回溯。include define MAX 10 int used[MAX];\/\/用来标记数字是否已经在前面使用过 int result[MAX];\/\/存放结果 int N;void print()\/\/输出结果 { int i;for(i=0;i printf("%d ",result[i]);printf("\\n");} void proc...

C语言递归问题(全排列)
可以输出所有的排列,i和n表示排列的起始点和终止点比如说要排列"abcd"起点就是0,终点是3,perm(“abcd”,0,3)就可以了。

c语言全排列(给个简单点的程序,网上的我简直看晕了)
\/\/以下为代码文件,思路就是交换数字,递归 include <stdio.h> int n = 1;int ans[1000];void swap(int *a, int *b){ int m;m = *a;a = *b;b = m;} void perm(int list[], int k, int m){ int i,tmp=0;if(k > m){ for(i = 0; i <= m; i++){ tmp=tmp*...

C语言 全排列···晕
这是算法思想,未完待续 两个for循环,里面的for执行一边后就是把数组的元素挨个往前挪一位,第一位到最后位,然后对前n-1位进行全排列,递归进行。从上面的算法思想中我们可以看出这样的目的和意义,就是一个类似对上面abc的分解过程,一次a到最后排bc,一次b到最后排ac,一次c到最后排ab。就先说...

C语言的递归全排列问题
putchar(list[i]);putchar('\\n');这就是输出啊 putchar(ch) ; \/\/输出一个字符到标准输出 相当于printf("%c" , ch );

a,b,c,d全排列C语言,C++,排列组合
\/\/既然那些你看不懂,就只能用这种方法了 include <stdio.h> using namespace std;int main(){ char a[4] = {'a','b','c','d'};\/\/定义字符数组 int i , j , k , l , cnt = 0;\/\/定义循环变量及当前为第cnt个组合 for(i = 0 ; i < 4 ; i++){\/\/a的所有可能位置 fo...

acm题 用c语言设计一个递归算法求全排列
\/\/1.cpp生成1~n的全排列#include<stdio.h>void Arrange(int cur,int n,int* arr){ if(cur==n+1) { for(int i=1;i<cur;i++) printf("%d ",arr[i]); printf("\\n"); return ; } for(int i=1;i<=n;i++) { int ok=1; for(int j=1...

C语言编写一个程序,真心求教:1.2.3.4四个数,能组合成多少个不同的三位 ...
将1234依次存入一个char型数组内,自定义一个全排列列函数进行4个数字的全排列运算,但每次输出时只取后3位即可达到目的。代码如下:include "stdio.h"void myfun(char *p,int i,int n){\/\/自定义全排列函数int j,t;if(i-n)for(j=i;j<=n;j++){t=p[i],p[i]=p[j],p[j]=t;myfun...

求n个数的全排列,n不定。用c语言。用于银行家算法中求安全序列_百度知 ...
好久没用c了,所以代码可能要用到伪代码 先定义a[maxn]用子函数递归 void p(int x){ if (n == x+1){ \/\/foreach a print \/\/输出数组a } for (int i=1 to n){ a[x] = i;p(x+1);a[x] = 0;} } 主函数main调用p(n)...

用C语言编程求1、2、3到n的全排列
include <stdio.h> int main(){ int n, nn;printf("input a number: ");scanf("%d", &n);for (int i = 1; i <= n; ++i){ nn = 1;for (int j = 1; j <= i; ++j){ nn = nn * j;} printf("%d! = %d\\n", --j, nn);} return 0;} ...

闭胃17383663545问: 一个C语言全排列的算法. 比如,输入3,则将123的全排列全部输出:123,132,213,231 -
克什克腾旗生脉回答: #include main() { int a1,a2,a3,a4,a5,a6,a7,a8,a9,n,t=0; scanf("%d",&n); for(a1=1;a1<=n;a1++) if(n==1){printf("%d\n",a1);t=t+1;}else for (a2=1;a2<=n;a2++)if(a2!=a1) {if(n==2) {printf("%d%d\n",a1,a2);t=t+1;} else for (a3=1;a3<=n;a3++)if(...

闭胃17383663545问: 用c语言实现 ABCDE按照全排列输出所有结果 -
克什克腾旗生脉回答: #include <stdio.h> #include <stdlib.h> void main() {char i,j,k,m,n;for(i='A';i<='E';i++)for(j='A';j<='E';j++)for(k='A';k<='E';k++)for(m='A';m<='E';m++)for(n='A';n<='E';n++)if(i!=j&&i!=k&&i!=m&&i!=n&&j!=k&&j!=m&&j!=n&&k!=m&&k!=n&&m!=n)...

闭胃17383663545问: c语言 给出一个数怎样输出该数的全排列 -
克什克腾旗生脉回答: 递归法:设输入的数为n,N={1,2,...n} 不断选择数字i,把i从N中剔除,直到N为空集即可 代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h> int N; bool *mark; int *output, pos = 0; void AddNumber(int i) {bool finish = true; mark[i] = ...

闭胃17383663545问: c语言求全排列 -
克什克腾旗生脉回答: 用迭代算法简单些, 就是速度慢许.算法为: 为求1 ~ n个整数的函数 permutation, * 如果n = 2, 只有两种排列方式, 即 (1, 2) (2, 1)* 迭代计算1 ~ n-1个整数的全排列* 将n插入所得到的1 ~ n-1的全排列的任意位置得到1 ~ n的全排列.

闭胃17383663545问: acm题 用c语言设计一个递归算法求全排列 -
克什克腾旗生脉回答: //1.cpp生成1~n的全排列 #include<stdio.h> void Arrange(int cur,int n,int* arr) {if(cur==n+1){for(int i=1;i<cur;i++)printf("%d ",arr[i]);printf("\n");return ;}for(int i=1;i<=n;i++){int ok=1;for(int j=1;j<cur;j++)if(arr[j]==i)ok=0;if(ok){arr[cur]=...

闭胃17383663545问: C 语言 全排列
克什克腾旗生脉回答: #include<stdio.h>/*这两个库函数是习惯性的加上去的^_^.*/ #include<stdlib.h> #define ISPRINT/*是否打印结果的标志*/ #define MAX 200/*最大的数*/ unsigned int *_NUM;/*用于存放一条结果的数组指针*/ char *_NUMFLAG;/*用于存放是否已...

闭胃17383663545问: c语言全排列 -
克什克腾旗生脉回答: 基本思想是用回溯法来搜索每一种排列 不过楼主对问题的说明不是很详细,所以我只好写个普适性比较大的了 下面这个程序读取一行字符串,然后对该字符串中的所有字符进行全排列输出 注:输入的字符串不要太长,因为不存在能够在短时间...

闭胃17383663545问: 求一个C语言全排列的算法. 比如,输入3,则将123的全排列全部输出:123,132,213,231,312,321. -
克什克腾旗生脉回答: #include main() { int a1,a2,a3,a4,a5,a6,a7,a8,a9,n,t=0; scanf("%d",&n); for(a1=1;a1

闭胃17383663545问: C语言全排列问题 -
克什克腾旗生脉回答: #include#define N 7 void perm(char*, int); int main(void) {char num[N+1], i;for(i = 1; inum[i] = char(i-1+'A');perm(num, 1);system("pause");return 0; } void perm(char* num, int i) {int j, k ; char tmp;if(ifor(j = i; jtmp = num[j];for(k = j; k > i; k--...

闭胃17383663545问: 全排列用C语言实现 -
克什克腾旗生脉回答: 给,已经编译运行确认: #include<stdio.h> #include<string.h> char a[20]; int lenth; long count=0; void main() {void move(int,int); int i,j=0; printf("input:");gets(a); lenth=strlen(a); for(i=0;i<lenth;i++) move(j,i);//move a[i] to the front of a[j]; printf("\...


本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网