要求一组数字的编程

来源:百度知道 编辑:UC知道 时间:2024/05/13 04:03:26
求一组数字抽取排列,我想不到怎么样编
举例“输入一组数字1-100,让它随机抽取排列输出4个数字的列表,
条件1:不可以顺序排列,例如1234,2345,6789等排列,
条件2:不可以隔一个数字排列,例如1357,2468,等排列,
条件3:不可以出现同一组都是十位数,例如10,13,14,16或者20,22,23,26等排列,只允许13,20,21,26排列

要求输出排列的数字列表以及显示计算排列总数是多少。
不是随机抽取的,是不允许指定排列,
例如“
条件一:不可以顺序排列,例如1234,2345,6789等排列,不允许有超过3个数字在同一组中”意思是,只允许1235,1236,1237等排列。
条件二:不可以隔一个数字排列,例如1357,2468,等排列,不允许有超过3个+2的数字在同一组中“意思是,只允许1359,246 10,10 12 14 18等排列

条件三:10/11/12/14,20/21/22/24,30/31/32/34这一组数字是前面都是10位数20位数30位数,在同一组中不允许超过3个数字都是同一组中,所以条件一,条件二,的数字也是不成立,排列数字中真正允许排列的是以下的数字

===========1/2/3/10,1/2/3/11,1/2/3/12,10/11/12/20,10/11/12/21,10/11/12/22=========此为真正允许排列的数字

给你个思路。
也许你想到的是随机抽取的算法,其实不是这样的,与那没有关系,它其实要求你得到所有符合一定条件的排列,以及所有排列的总数。

int[] a={5,9,7,1}
for(int i=a.length-1;i<=0;i--)
{
for(int j=1;j<i;j++)
{
if(a[j]<a[j+1])
{
int c;
c=a[j];
a[j]=a[j+1]
a[j+1]=c;
}
}
}