我希望将123、132、213、231、312、321全排列输出为1,2,3,请大侠给出算法或者java代码,
如果有排列是123、124、134、213.432共24个,即P43,能够输出1,2,3,4
换种说法,我从m个数字里面选n个数字按照一定的顺序排列起来,数学叫Pmn,上下标打不起,如果m=n,就叫全排列.例如m=n=3,其排列为:123、132、213、231、312、321共6组,P33=3*2*1=6;如果m=4,n=3,起排列为:123、124、132、134..431、432共24组,P43=4*3*2=24;现在我希望的是如果我已知一堆排列,能找出是哪些数字组合在一起才能得到这些排列.例如:已知排列有123、132、213、231、312、321,需要输出1、2、3,但如果我有123、132、213、231、312、412,则没有任何输出;再如有排列123、124、132、134..431、432共24组,需要输出1、2、3、4,不知现在是否说清楚了
人气:195 ℃ 时间:2020-02-20 22:37:24
解答
遍历所有排列的数据:例 123将之拆分的 ‘1’ ‘2’ ‘3‘ 用一数组存取存在的数,虽然这办法效率不高,但能你实现你的所要的效果,你按这个思想写一下吧.实在不行,我再帮你写一个不是很明白你的思路,你要能写,最好不过!这几天有事,我写了一个,你参考一下吧:public class Sample{public static void main(String[] args){String[] data = {"123","12","234"}; //你的排列数据char []c = new char[32]; //存放将String转换为char数组char ret[] = new char[32];//存放结果int i,dlength,a,j,z,flag;a = 0;for(i = 0; i < 3; i++){c = data[i].toCharArray();dlength = data[i].length();for(j = 0; j < dlength; j++){flag = 1;for(z = 0; z < a; z++){if(ret[z] == c[j]){flag = 0;break;}}if(flag == 1)ret[a++] = c[j];}}System.out.print("ret: ");for(i = 0; i < a; i++)System.out.print(ret[i]+" ");}}
推荐
猜你喜欢
- 英语作文我家的家规
- 一个圆锥形零件,面底直径的4厘米,高6厘米它的体积是( )立方厘米
- 苹果的质量是梨的6分之5,香蕉是苹果的4分之3,梨和香蕉有78kg,苹果多重.
- 什么是主语,谓语,宾语……
- 工地有72人运土和挖土,3人挖出土,1人运正好运完.怎样安排人,才使挖的土全部运走.
- 鹅的孵化:
- 乐乐放学回家要走10分钟,强强放学要走14分钟.强强回家的路程币乐乐回家的路程多六分之一,乐乐比强强...
- 电冰箱的制冷物是如何循环的