C语言。。。把一个数组里的数字(均为一位)全排列,(例如1,2,3全
C语言。。。把一个数组里的数字(均为一位)全排列,(例如1,2,3全排列得到123.132.213.231.312.321)得到所有重新排列后的结果除以11。网上百度到使...
C语言。。。把一个数组里的数字(均为一位)全排列,(例如1,2,3全排列得到123.132.213.231.312.321)得到所有重新排列后的结果除以11。网上百度到使用递归调用,但是我写过之后无限循环,求教。。。。
该问题已关闭。 展开
该问题已关闭。 展开
1个回答
展开全部
#include <stdio.h>
int data[] = {1,2,3,4};
int n = sizeof(data)/sizeof(data[0]);
int used[20];
int print()
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=0;j<n;j++)
{
if(used[j]==i)printf("%d",data[j]);
}
}
printf("\n");
}
int dfs(int p)
{
if(p>n)
{
print();
return 0;
}
int i = 0;
for(i=0;i<n;i++)
{
if(!used[i])
{
used[i]=p;
dfs(p+1);
used[i]=0;
}
}
}
int main()
{
dfs(1);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询