如何输出一个数组各元素的所有排列 如何输出一个数组各元素的所有排列?因工作需要,需要排列算法,请各位老师帮忙。最好不用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); } 无聊了就来捣乱,发发偶喜欢的歌 如何显示带有自定义标题的对话框 dbgrid修改后直接保存到数据库,请给出代码,谢谢。 ComboBox输入 关于ThemeEngine中的TeComboBox的中文显示问题? 大脑都崩溃了,一个关于图标的问题,大虾进 放分200支持menggirl做版主----星星球 如何拷贝Canvas上的一区域到另一个区域。 求一算法! Delphi求指点 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);
}