有重复元素的全排列问题

#include<iostream>
using namespace std;
int  ch(int list[],int k,int i)
{
	if(k<i)
	{
		for(int t=k;t<i;t++)
		{
			if(list[t]==list[i])
			{
				return 0;
			}
		}
	}
	return 1;
}
void perm(int list[],int k,int m)
{
	if(k==m)
	{
		for(int i=0;i<=m;i++)
		{
			cout<<list[i];
		}
		cout<<endl;
	}
	else
	{
		for(int i=k;i<=m;i++)
		{
			if(ch(list,k,i))
			{
				swap(list[k],list[i]);
				perm(list,k+1,m);
				swap(list[k],list[i]);
			}
		}
	}
}
void swap(int &a,int &b)
{
	int temp;
	temp=a;
	a=b;
	b=temp;
}
int main()
{
	int list[3]={0,1,2};
	perm(list,0,2);
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/tingzizhilian/article/details/88733736
今日推荐