ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言 全排列

2022-01-06 11:02:16  阅读:162  来源: 互联网

标签:count 排列 int void C语言 char strcpy include


1.无重复字符

#include  <stdio.h>  
#include  <string.h>
#define N 30

void p(char a[], int m, int n)
{
    char b[N], t ;    
    int i ;    if (m == n)    
    printf("%s ", a) ;    
    else    
    for (i = m ; i < n ; i++)    
    {        
        strcpy(b, a) ;        
        t = a[m], a[m] = a[i], a[i] = t ;        
        p(a, m+1, n) ;        
        strcpy(a, b) ;    
    } 
}

main(void)
{
    char a[N] ;    
    printf("请输入一个没有重复字符的字符串:\n") ;    
    scanf("%s", a) ;    
    int m = 0, n = strlen(a) ;    
    p(a, m, n) ;
}

2.有重复字符

#include  <stdio.h>
#include  <string.h>
#define N 100

char result[N][N], x[N] ;
int count = 0 ; 

void into()
{
	int i ;     
	for (i = 0 ; i < count ; i++)	
	{		
	    if (strcmp(result[i], x) == 0)			
	    break ;		
	}     
	if (0 == count || i == count)     
	strcpy(result[count++], x) ;
}

void p(int m, int n)
{
    char t[N], temp ;    
    int i ;    
    if (m == n)    
    into() ;    
    else    
    for (i = m ; i < n ; i++)    
    {        
        strcpy(t, x) ;        
        temp = x[m], x[m] = x[i], x[i] = temp ;        
        p(m+1, n) ;        
        strcpy(x, t) ;    
    } 
}

main (void)
{
	printf("请输入一个字符串(有重复字符):\n") ;	
	gets(x) ;	
	p(0, strlen(x)) ;	
	for (int i = 0 ; i <= count ; i++)         
	printf("%s\n", result[i]) ;
}

标签:count,排列,int,void,C语言,char,strcpy,include
来源: https://blog.csdn.net/m0_63790435/article/details/122338610

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有