📄 dictionary.c
字号:
/*字典序法生成全排列的下一个序列*/
main ()
{
int i,j,k,t,n,p[100],select;
select=1; /*select用于控制是否循环执行程序*/
while (select)
{
printf("please input an Integer n:"); /*n为数的个数*/
scanf("%d",&n);
printf("\n");
printf("please input %d number arrange:\n",n);
for (i=1;i<=n;i++) /***********************/
{ /*输入一个排列*/
scanf("%d",&p[i]); /***********************/
}
clrscr();
printf("The primary arrange is:\n");
for (i=1;i<=n;i++) /***************/
{ /*打印出当前序列*/
printf("%d ",p[i]); /****************/
}
j=2;
i=j;
for (;j<=n;j++) /*求i=max{j|p[i-1]<p[j]}*/
{
if ((p[j-1]<p[j])&(j>i))
i=j;
}
/*printf("i=%d",i); */
k=1;
j=1;
for (;k<=n;k++) /*求j=max{k|p[i-1]<p[k]}*/
{
if ((p[i-1]<p[k]))
t=k;
if (t>j)
j=t;
}
/*printf("j=%d",j);*/
t=p[i-1];
p[i-1]=p[j]; /*p[i-1]与p[i]互换*/
p[j]=t;
for (j=i;j<=(i+n)/2;j++)
{
t= p[j];
p[j]=p[n+i-j]; /*将p[i]p[i+1]…p[n]部分逆转*/
p[n+i-j]=t;
}
printf("\nThe next arrange is:");
for (i=1;i<=n;i++)
{ /*打印出下一个序列*/
printf("%d ",p[i]);
}
printf("\n\t1==>continue\n");
printf("\t0==>exit\n"); /*打印出菜单*/
scanf("%d",&select);
clrscr();
}
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -