C语言数字全排列的问题(急!!)求C代码和算法

2024-12-22 23:16:36
推荐回答(2个)
回答1:

#include
#include

char string[]="123456789a";
int used[10]={0};
char output[10];
int length;

void Fun(int d)
{
int i;

for(i=0;i<=length;i++)
{
if(!used[i])
{
used[i]=1;
output[d]=string[i];
if(d==length)
{
for(d=0;d {
if(output[d]=='a')
printf("10 ");
else printf("%c ",output[d]);
}
if(output[length]=='a')
printf("10\n");
else
printf("%c\n",output[length]);
}
else
Fun(d+1);
used[i]=0;
}
}
}

int main()
{
int n;
scanf("%d",&n);

string[n]=0;
length=strlen(string)-1;

Fun(0);

return 0;
}

回答2:

#include
#include
#include
using namespace std;
int result[100];
int deep;
bool visited[100];
void dfs(int m,int cur)
{
result[cur]=m;
if(cur==deep)
{
for(int i=1;i<=deep;i++)
{
cout<}
cout<return ;
}
cur++;
for(int i=1;i<=deep;i++)
{
if(visited[i]==false)
{
visited[i]=true;
dfs(i,cur);
visited[i]=false;
}
}
}
int main()
{
freopen("456.txt","w",stdout);
cin>>deep;
memset(visited,0,sizeof(visited));
for(int i=1;i<=deep;i++)
{
visited[i]=true;
dfs(i,1);
visited[i]=false;
}
return 0;
}