例如,如果輸入字符串是「ABC」,則輸出應該是「ABC,ACB,BAC,BCA,CAB,CBA」。此代碼的時間複雜度列出所有排列?
這裏是我的方法:
#include<stdio.h>
#include<conio.h>
#include<string.h>
void print(char str[],int visited[],int index,char temp[],int len)
{
if(index==len)
{
temp[index]='\0';
printf("\n%s",temp);
return;
}
for(int i=0;i<len;i++)
{
if(!visited[str[i]-'A'])
{
visited[str[i]-'A']=1;
temp[index]=str[i];
print(str,visited,index+1,temp,len);
visited[str[i]-'A']=0;
}
}
}
int main()
{
int visited[20]={0};
char temp[20];
char str[] = "ABCD";
int len=strlen(str);
print(str,visited,0,temp,len);
getch();
return 0;
}
我已經使用訪問陣列,以避免字符的重複。 這段代碼的複雜程度如何?
'std :: next_permutation'。 – Rapptz
@Rapptz我知道這個功能。但我想知道這段代碼的運行時間是多少。 – nikola
您確定要將其標記爲C++嗎?這對我來說看起來像C。 – Rapptz