输出字符串的全排列abc

比如 a,b ,c三个字母

输出 abc,acb,bac,bca,cab,cba;

#include
#include
using namespace std;


//字符串的全排列
string s;
char c[3] = { 'a','b','c' };
int access[3] = { 0 };//三个标志位,有字母为1,无为0
void getAll()
{
	if (s.size() == 3)//字符串已填满,输出,并退出返回上层
	{
		cout << s << endl;
		return;
	}

	for (int i = 0; i < 3; i++)
	{
		if (access[i] == 0)//当前标志位为0,插入
		{
			s.push_back(c[i]);//插入
			access[i] = 1;   //标志位写为1
			getAll();
			s.pop_back();		//尾删
			access[i] = 0;	//标志位写为0;
		}
	}
}
int main()
{
	getAll();

	system("pause");
	return 0;
}

输出字符串的全排列abc_第1张图片

你可能感兴趣的:(c++,刷题)