您的位置:首页 > 其它

有重复元素的排序问题

2013-10-27 16:04 429 查看
问题描述:设有{r1,r2,...,rn}共n个元素,这n个元素中可能存在重复元素,试设计一个算法,列出这n个元素的不同排列。

程序代码:

/**

* @author Administrator

* 有重复元素的排序问题

*/

public class Order {

int num = 0;

boolean contains(String list[], int k, int i) {

return list[i] == list[k];

}

void Swap(String arr[], int i, int j) {

String temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

void Perm(String list[], int k, int m) {

if (k == m) {

num++;

// 只剩下1个元素

for (int i = 0; i <= m; i++) {

System.out.print(list[i]);

}

System.out.println();

} else // 还有多个元素待排列,递归产生排列

{

for (int i = k; i <= m; i++) {

if (!contains(list, k, i)) {

Swap(list, k, i);

Perm(list, k + 1, m);

Swap(list, k, i);

}

}

}

}

public static void main(String[] args) {

Order o = new Order();

int n;

String[] list = new String[100];

Scanner sc = new Scanner(System.in);

System.out.println("请输入要排序的字符个数");

n = sc.nextInt();

for (int i = 0; i < n; i++) {

list[i] = sc.next();

}

o.Perm(list, 0, n - 1);

System.out.println(o.num);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: