登陆论坛 找回密码 立刻获得20pp! 地图 帮助
宽带山生活
版主: [申请斑竹] 

  • 主题内容
<< [1] >>  [只看楼主]  [加入关注] 点击:527 回复:9 已被0人关注

主题:help!! 怎么用java实现全排列?

388 0

来自:海外
注册:2000-09-24
发帖:73+118 
跪求!!



-------------------------------------------------------------------------------------------
必须使腐败分子在经济上倾家荡产,在政治上身败名裂,在心理上后悔莫及。

发表于:2004-01-25 21:33:58
推荐:牙齿有问题,您找我! ...楼主...

238 0

来自:上海
注册:2001-06-29
发帖:9+150 
才看见这贴,回晚了,呵呵
public static void main(String args[])
{
int a[] = { 1, 2, 3, 4};
Array( a, 0, 4 );//第二个参数已定为0,第三个参数表示数组中有几位数参与排列

}

public static void Array( int a[], int count, int max )//cout表示第几位数排列完成
//max表示有几个数参与排列
{
if ( count == max - 1 ) //若数组中全部排完时
{
for ( int i = 0; i < max; i++ )
System.out.print( a[i] + " " );
System.out.println();
}
else
{
int b[] = new int[ max ]; //创建新数组,用于递归
for ( int i = 0; i < count; i++ ) //将前面确定的书存入新数组
b[ i ] = a[ i ];

int k = count;
for ( int i = count; i < max; i++ )
{
b[ k++ ] = a[ i ]; //选择一个数,存入
for ( int j = count; j < max; j++ ) //选择不重复的数,依次存入
{
if ( i != j )
b[ k++ ] = a[ j ];

}
k = count;

Array( b, count + 1, max ); //递归
}
}
}
主要思路是利用递归的方法,现排列好几个数,在将剩下的数依次排列。downloading



-------------------------------------------------------------------------------------------
人生只似风前絮,欢也零星,悲也零星,都作连江点点萍。

发表于:2004-01-27 19:23:45

贱贱猫
398 0

来自:上海
注册:2001-05-14
发帖:79+1185 
public class Permutation {

public static int MAX = 4;

public static boolean state[] = new boolean[MAX+1];

public static int item[] = new int[MAX+1];

public static void main(String[] args) {
DoPermutation(1);
}

public static void DoPermutation(int pos) {
if (pos > MAX) {
for (int j = 1 ; j <= MAX; j++)
System.out.print(item[j]);
System.out.println();
return;
}
for (int i = 1; i <= MAX; i++) {
if (!state[i]) {
state[i] = true;
item[pos] = i;
DoPermutation(pos+1);
state[i] = false;
}
}
}
}
这样更简洁一些downloading



-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......

发表于:2004-01-29 17:07:45
推荐:畅玩天下贰,精彩玄幻飞行 ...第2楼...

238 0

来自:上海
注册:2001-06-29
发帖:9+150 
downloadingdownloadingdownloading但是你这样的话,如果任意四个数的排列是不是就得好好改一下了?



-------------------------------------------------------------------------------------------
人生只似风前絮,欢也零星,悲也零星,都作连江点点萍。

发表于:2004-01-29 21:24:03

贱贱猫
179 0

来自:上海
注册:2003-07-21
发帖:82+1011 
public class Permutation {

public static int MAX = 4;

public static boolean state[] = new boolean[MAX+1];

public static int item[] = new int[MAX+1];

public static String element[] = {"a", "b", "c", "d"};

public static void main(String[] args) {
DoPermutation(1);
}

public static void DoPermutation(int pos) {
if (pos > MAX) {
for (int j = 1 ; j <= MAX; j++)
System.out.print(element[item[j] - 1]);
System.out.println();
return;
}
for (int i = 1; i <= MAX; i++) {
if (!state[i]) {
state[i] = true;
item[pos] = i;
DoPermutation(pos+1);
state[i] = false;
}
}
}
}
downloading就加了一行,改了一句,随便排什么了downloading



-------------------------------------------------------------------------------------------
哈哈,我爱小香猪!

发表于:2004-01-30 10:10:08

贱贱猫
179 0

来自:上海
注册:2003-07-21
发帖:82+1011 
怎么变成那样了,再来
public class Permutation {

public static int MAX = 4;

public static boolean state[] = new boolean[MAX+1];

public static int item[] = new int[MAX+1];

public static String element[] = {"1", "2", "3", "4"};

public static void main(String[] args) {
DoPermutation(1);
}

public static void DoPermutation(int pos) {
if (pos > MAX) {
for (int j = 1 ; j <= MAX; j++)
System.out.print(element[item[j] - 1]);
System.out.println();
return;
}
for (int i = 1; i <= MAX; i++) {
if (!state[i]) {
state[i] = true;
item[pos] = i;
DoPermutation(pos+1);
state[i] = false;
}
}
}
}



-------------------------------------------------------------------------------------------
哈哈,我爱小香猪!

发表于:2004-01-30 10:11:31
推荐:kds红日官网启动啦!!! ...第5楼...

贱贱猫
179 0

来自:上海
注册:2003-07-21
发帖:82+1011 
见鬼了

开头加

  引用:

public static String element[] = {"1", "2", "3", "4"};



  引用:

System.out.print(item[j]);

改成

  引用:

System.out.print(element[item[j] - 1]);

OKdownloading



-------------------------------------------------------------------------------------------
哈哈,我爱小香猪!

发表于:2004-01-30 10:14:13

贱贱猫
398 0

来自:上海
注册:2001-05-14
发帖:79+1185 
终于好了

  引用:

public class Permutation {

public static int MAX = 4;

public static boolean state[] = new boolean[MAX+1];

public static int item[] = new int[MAX+1];

public static String element[] = {"1", "2", "3", "4"};

public static void main(String[] args) {
DoPermutation(1);
}

public static void DoPermutation(int pos) {
if (pos > MAX) {
for (int j = 1 ; j <= MAX; j++)
System.out.print(element[item[j] - 1]);
System.out.println();
return;
}
for (int i = 1; i <= MAX; i++) {
if (!state[i]) {
state[i] = true;
item[pos] = i;
DoPermutation(pos+1);
state[i] = false;
}
}
}
}



-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......

发表于:2004-01-30 10:21:00
推荐:大家对于幼教有什么看法? ...第7楼...

238 0

来自:上海
注册:2001-06-29
发帖:9+150 
呵呵。downloading



-------------------------------------------------------------------------------------------
人生只似风前絮,欢也零星,悲也零星,都作连江点点萍。

发表于:2004-01-30 16:56:15
推荐:长期更新,从懂事到现在 ...第8楼...

回复主题 [ 返回JAVA讨论区 ]
主题: help!! 怎么用java实现全排列?
手机看宽带山

关于我们 - 联系我们 - 加入我们 - 营销服务 - 友情链接 - 频道合作- PChome Widget
Copyright © 1996-2009 PChome.net All rights reserved. 电脑之家 版权所有