永发信息网

求一个C++工程的全排列解法,必须按照我写的步骤!!!

答案:2  悬赏:0  手机版
解决时间 2021-05-10 23:58

步骤:

1、从n个数中从右向左找第一对相邻的左<右的数

2、左数标为—>标志1

3、从n个数中从右向左找第一个比标志1大的数

4、刚才找到的数标为—>标志2

5、swap标志1和标志2

6、从标志1往后的第一个数开始进行从大到小的排序

7、输出n个数

8、return1-7,直到1不成立

最佳答案

int array[N];//这是我们的数组,N是一个事先定义好的表示长度的数值


int f1;//标志1


int f2;//标志2


int i,j;


for(i=N-1;i>0;i--)


{


if(array[i-1]<array[i])


{f1=i-1;


for(j=N-1;j>=0;j--)


{


if(array[j]>array[i])


t=array[f1];


array[f1]=array[f2];


array[f2]=t;


//程序写到这儿我就没写了,因为我不知道6、从标志1往后的第一个数开始进行从大到小的排序和


//8、return1-7,直到1不成立是什么意思


}


}


}

全部回答
int a[4]={1,2,3,4}; int i,s1,s2,j,t; for (;;) { for (i=3;i>=1;--i) { if (a[i]>a[i-1]) { s1=i-1; break; } } if (i ==0) { break; } for (i=3;i>s1;--i) { if (a[i]>a[s1]) { s2=i; break; } } t=a[s1]; a[s1]=a[s2]; a[s2]=t; for (i=s1+1;i<3;++i) { for (j=i+1;j<4;++j) { if (a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } } for (i=0;i<4;++i) { cout << a[i] << " "; } cout << endl; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
QCC的一首歌
档案从原单位掉回原籍时被拆开了,去哪里在封
请问浙江玉环哪里有卖背背佳?
旋转轮胎怎么拉木头,魔域中拉木材怎么弄啊?
建行网银忘记密码重置怎么搞?试了很多次都没
请问玩游戏入迷勒!怎么办?怎样才能摆脱它?
如果你和那女的分手了,你还缠着她.他说在缠
为什么我老公喜欢和其它女孩子聊天而不愿和我
给我推荐个发型吧
齐齐哈尔哪卖的MP5好,是品牌的,还不贵,最
超急!有哪位高手能帮忙看看下面两段sql有什
魔兽世界,冰法,法师如果要打多彩宝石打什么
北流的精品店在哪里?
请问办理出国去澳洲或新加坡需要那些条件
如何确诊白斑病
推荐资讯
WOW里是部落还是联盟好啊?种族和职业怎么搭
成都华育国际怎么样,在深圳工作怎么样?
关于DNF的问题请教
qq农场牧场中秋节的种子在哪买到
CF vo.7.9怎么卡箱子??
从小就膝盖疼
俊楠是什么意思,俊楠这个名字好吗 ?给个建议
谁知道上海天天快递公司的服务电话呀
跪求一计算机网络应用现状调查与展望方面的课
请问如何学会股票编辑公式?谢谢高手
一个喜欢我男朋友的女人,找我谈我和她吵了起
东风劲诺160马力自卸车配置?价格?能装多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?