永发信息网

怎么用递归的思路来转换这个数组,比较费智商

答案:2  悬赏:80  手机版
解决时间 2021-07-16 21:11
  • 提问者网友:眉目添风霜
  • 2021-07-16 05:30

int a[9]={1,2,3,4,5,6,7,8,9}
数组里的9个数如果组合成一个整数 123456789 ;
怎么应用递归的思路把数组里的九个数变化位置让它组成的整数逐渐递加,直到变成最大987654321

如:
123456789 ;
123456798 ;
123456879 ;
123456897 ;
123457689 ;
····
····
····
····
987654312 ;
987654321 ;
没有分数,所以只能等好心人 谢谢~

最佳答案
  • 五星知识达人网友:鱼忧
  • 2021-07-16 06:52
全排列问题:

#include <stdio.h>

int a[10], f[10], n;

void per( int k )
{
int i, j;
for ( i = 0; i < n; ++i ) {
if ( !f[i] ) {
f[i] = 1;
a[k] = i+1;
if ( k+1 == n ) {
for ( j = 0; j < n; ++j )
printf( "%d ", a[j] );
putchar( '\n' );
} else {
per( k + 1 );
}
f[i] = 0;
}
}
}

int main()
{
n = 9;
per( 0 );
}

这是求1~9这9个数字的全排列,结果有点多
你可以把main函数里的n改小看效果,比如n = 5
全部回答
  • 1楼网友:像个废品
  • 2021-07-16 08:05

一个排序问题,如果一定要用递归的话,建议查询一下快速排序算法

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯