麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

所有情況下全排列的實現(xiàn)

2019-11-14 09:23:53
字體:
供稿:網(wǎng)友

全排列是將一組數(shù)按一定順序進行排列,如果這組數(shù)有n個,那么全排列數(shù)為n!個。我們在此需要考慮重復(fù)情況。應(yīng)用遞歸算法實現(xiàn)排序。

1.如下程序,可實現(xiàn)全排列,但是缺少判斷函數(shù)不能處理重復(fù)情況。

#include <stdio.h>int permutation( char s[], int b, int e ){	if( 0 <=b && b <= e)	{		if( b == e )		{			PRintf( "%s/n",s);			}		else		{			int i;			for( i=b; i<=e; i++)			{				char c = s[b];				s[b] = s[i];				s[i] = c;				permutation( s, b+1, e);				c = s[b];				s[b] = s[i];				s[i] = c;				}			}		}}int main() {	char s[] = "123";	permutation( s,0,2);		return 0;}2.加入判斷函數(shù)后可處理重復(fù)情況。

#include <stdio.h>int is_swap(char s[], int begin, int k){	int i;	for (i = begin; i < k; i ++)		if(*(s + i) == *(s + k))			return 0;	return 1;}void permutation(char s[], int b, int e){    if( (0 <= b) && (b <= e) )    {        if( b == e )        {            printf("%s/n", s);        }        else        {            int i = 0,m = 0,zx = 1;                        for(i=b; i<=e; i++)            	if(is_swap(s,b,i))            	{                	char c = s[b];                	s[b] = s[i];                	s[i] = c;                                                	permutation(s, b+1, e);                                	c = s[b];                	s[b] = s[i];                	s[i] = c;            	}        }    }}int main(){    char s[] = "aabb";        permutation(s, 0, sizeof(s) - 2);    printf("%d",sizeof(s));        return 0;}3.優(yōu)化,寫出交換函數(shù),直接調(diào)用調(diào)換函數(shù)進行調(diào)換。

#include <stdio.h>//#include <stdlib.h>#include <string.h>void swap(char *str, int begin, int k){	char tmp;	tmp = *(str + begin);	*(str + begin) = *(str + k);	*(str + k) = tmp;}int is_swap(char *str, int begin, int k){	int i;	for (i = begin; i < k; i ++)		if(*(str + i) == *(str + k))			return 0;	return 1;}void permutation(char *str, int begin, int end){	int k;	if (begin == (end - 1)) 	{		printf("%s/n", str);		return;	}	for (k = begin; k < end; k++)		if(is_swap(str, begin, k)) 		{			swap(str, begin, k);			permutation(str, begin + 1, end);			swap(str, begin, k);		}}int main(void){	char str[10];	int length;	gets(str);	length = strlen(str);	printf("%d/n", length);	permutation(str, 0, length);	return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产成人高清成人av片在线看 | 91青青 | 一级观看免费完整版视频 | 俄罗斯16一20sex牲色另类 | 4p一女两男做爰在线观看 | 久久综合婷婷香五月 | 成人在线视频一区 | 91午夜在线观看 | 免费黄网站在线播放 | 成码无人av片在线观看网站 | 国产成人在线网址 | 久久久久久片 | 日本高清黄色片 | 精品一区二区免费 | 国产精品久久久久久久久久了 | 中文字幕在线视频日本 | 2021狠狠操| 久久亚洲线观看视频 | 中文字幕一区2区 | 中国老女人一级毛片视频 | 欧美日韩免费看 | 国产精品99久久久久久久 | 五月天堂婷婷 | 99精品国产小情侣高潮露脸在线 | 亚洲一区二区国产 | 国产a一级片| 国产女做a爱免费视频 | 中国漂亮护士一级a毛片 | 日本黄色大片免费 | 欧美日韩亚洲视频 | 欧美a级在线免费观看 | 欧美一级欧美 | jizzjizz中国少妇中文 | 青青草免费观看完整版高清 | 性欧美视频在线观看 | 中文字幕精品久久 | 5a级毛片 | 激情网站在线观看 | 在线观看视频日本 | 中文字幕在线观看1 | 婷婷亚洲一区二区三区 |