一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

字符串全排列問題

 Home of heart 2011-11-15
字符串全排列問題

問題:給定字符串S,生成該字符串的全排列。

方法1:依次從字符串中取出一個字符作為最終排列的第一個字符,對剩余字符組成的字符串生成全排列,最終結(jié)果為取出的字符和剩余子串全排列的組合。

#include <iostream>
#include <string>
using namespace std;

void permute1(string prefix, string str)
{
	if(str.length() == 0)
		cout << prefix << endl;
	else
	{
		for(int i = 0; i < str.length(); i++)
			permute1(prefix+str[i], str.substr(0,i)+str.substr(i+1,str.length()));
	}
}

void permute1(string s)
{
	permute1("",s);
}

int main()
{
	//method1, unable to remove duplicate permutations.
	cout << "method1" << endl;
	permute1("ABA");
}

優(yōu)點:該方法易于理解,但無法移除重復的排列,如:s="ABA",會生成兩個“AAB”。

方法2:利用交換的思想,具體見實例,但該方法不如方法1容易理解。

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;

void swap(char* x, char* y)
{
	char tmp;
	tmp = *x;
	*x = *y;
	*y = tmp;
}

/* Function to print permutations of string
   This function takes three parameters:
   1. String
   2. Starting index of the string
   3. Ending index of the string. */
void permute(char *a, int i, int n)
{
   int j;
   if (i == n)
     printf("%s\n", a);
   else
   {
        for (j = i; j <= n; j++)
       {
	      if(a[i] == a[j] && j != i)  //為避免生成重復排列,當不同位置的字符相同時不再交換
	       continue;
          swap((a+i), (a+j));
          permute(a, i+1, n);
          swap((a+i), (a+j)); //backtrack
       }
   }
} 

int main()
{
	//method2
	cout << "method2" << endl;
	char a[] = "ABA";
	permute(a,0,2);
	return 0;
}
兩種方法的生成結(jié)果:
method1
ABA
AAB
BAA
BAA
AAB
ABA
method2
ABA
AAB
BAA
請按任意鍵繼續(xù). . .

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本不卡一区视频欧美| 国产女同精品一区二区| 国产精品夜色一区二区三区不卡| 久久精品免费视看国产成人| 亚洲一区二区三区有码| 午夜福利精品视频视频| 欧美国产日产综合精品| 亚洲男人的天堂久久a| 国产一区二区三区丝袜不卡| 黑鬼糟蹋少妇资源在线观看| 空之色水之色在线播放| 大尺度激情福利视频在线观看| 美女极度色诱视频在线观看| 欧美日韩亚洲巨色人妻| 五月激情婷婷丁香六月网| 欧美日韩在线观看自拍| 久久精品偷拍视频观看| 国产成人综合亚洲欧美日韩| 日本中文字幕在线精品| 国产欧美性成人精品午夜| 五月激情综合在线视频| 在线免费看国产精品黄片| 亚洲精品国产福利在线| 久久精品国产一区久久久| 大香蕉精品视频一区二区| 国产精品一区二区三区日韩av| 色一情一伦一区二区三| 欧美一区二区三区十区| 久久黄片免费播放大全 | 人妻久久这里只有精品| 日韩精品一级一区二区| 大香蕉网国产在线观看av| 黄色片一区二区在线观看| 日韩蜜桃一区二区三区| 亚洲性日韩精品一区二区| 亚洲天堂精品一区二区| 亚洲专区中文字幕视频| 又色又爽又黄的三级视频| 国产一区国产二区在线视频| 国产色偷丝袜麻豆亚洲| 青青操视频在线播放免费|