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

首頁 > 學院 > 開發設計 > 正文

所有情況下全排列的實現

2019-11-14 10:15:07
字體:
來源:轉載
供稿:網友

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

1.如下程序,可實現全排列,但是缺少判斷函數不能處理重復情況。

#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.加入判斷函數后可處理重復情況。

#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.優化,寫出交換函數,直接調用調換函數進行調換。

#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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费视频观看 | 毛片视频在线免费观看 | 美女久久久久久久久 | 精品国产中文字幕 | 91羞羞| 亚洲精品永久视频 | 国产亚洲精品美女久久久 | 日本在线视频免费观看 | 亚洲一区在线观看视频 | 九九热在线精品视频 | 久久国产精品小视频 | 精品国产一区在线 | 久久国产精品久久精品国产演员表 | 国产乱色精品成人免费视频 | 久久人人爽人人爽人人片av高请 | 久久线视频 | 日本视频免费 | 大西瓜永久免费av在线 | 精精国产xxxx视频在线野外 | 亚洲人成在线播放 | www亚洲 | 中文字幕亚洲视频 | 极品国产91在线网站 | 热@国产| 一级毛片真人免费播放视频 | 精品亚洲二区 | 911网站大全在线观看 | 护士hd老师fre0性xxx | 国产精品视频专区 | 精品一区二区三区毛片 | 精品国产一区二区在线观看 | 日本精品网 | 精品国产乱码久久久久久丨区2区 | 欧美精品一区自拍a毛片在线视频 | 亚洲国产视频网 | 深夜网站在线观看 | 日本欧美一区二区 | 欧美日韩爱爱视频 | 黄色片网站免费在线观看 | 成人在线免费观看视频 | 久草在线观看福利视频 |