如何输出一个数组各元素的所有排列 如何输出一个数组各元素的所有排列?因工作需要,需要排列算法,请各位老师帮忙。最好不用STL等各类函数库、迭代器。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那就重新贴一个, C语言的:#include <stdio.h> #define n 4 /*求1-n的所有排列*/ int a[n],d[n],e[n]; void main() { int i,q,p,k,r,total; a[1]=1; for(i=2;i<=n;i++) { a[i]=i; d[i]=i; e[i]=-1; } total=0; s2: q=0; for(i=1;i<=n;i++)printf("%d ",a[i]); printf("\n"); total+=1; for(k=n;k>=2;k--) { d[k]+=e[k]; p=d[k]; if(p==k) e[k]=-1; else if(p==0) {e[k]=1;q++;} else { p+=q; r=a[p]; a[p]=a[p+1]; a[p+1]=r; goto s2; } } printf("total= %d\n",total); } 控件问题 usb转串口驱动程序开发 该怎么学NET 怎样使程序最小化时,放在任务栏???? 问一个关于DBGRID的缺省值的简单问题 如何捕捉发给父窗体的消息? IB数据库图像存储与查询 讨论:关于控件!高手快来抢分啊!!!!!!!!!!!!!!!!! 奇怪的问题??!! 用TQuery可以一次创建多个存储过程吗? ORACLE访问速度慢死啦! 简单的输入问题!
#define n 4 /*求1-n的所有排列*/
int a[n],d[n],e[n];
void main()
{
int i,q,p,k,r,total;
a[1]=1;
for(i=2;i<=n;i++)
{
a[i]=i;
d[i]=i;
e[i]=-1;
}
total=0;
s2:
q=0;
for(i=1;i<=n;i++)printf("%d ",a[i]);
printf("\n");
total+=1;
for(k=n;k>=2;k--)
{
d[k]+=e[k];
p=d[k];
if(p==k)
e[k]=-1;
else if(p==0)
{e[k]=1;q++;}
else {
p+=q;
r=a[p];
a[p]=a[p+1];
a[p+1]=r;
goto s2;
}
}
printf("total= %d\n",total);
}