问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA模拟排列组合

发布网友 发布时间:2022-04-26 05:03

我来回答

3个回答

热心网友 时间:2022-06-20 23:30

全排列-有个递推公式(以[1 2 3 ] 为例):
所有全排列是:
step 1: {1 [2 3]}, {2, [1, 3]}, {3, [1, 2]}
对上面方括号里面的数字再进行如上的求解比如[2 3]
step 2: {2, [3]}, {3, [2]};
当方括号里面的数字只有一个元素的时候, 整个递归过程就返回了, 所以, step 2回到step 1的结果是:
1 2 3
1 3 2
。。。

算法有了 应该自己会写了吧 不过怎么证明这个算法的正确性你可以自己考虑一下:
小提示:
tip 1: n个数字的所有排列有n!种。(已知)
tip 2:证明 以上算法不会出现重复的排列顺序(需要证明的)
tip 3: 证明以上算法最终能得到n!个结果 (需要证明的)

综上tip 1、2、3 可以证明以上算法确实能得到所有元素的全排列。

希望你自己能抽象写出相应的算法。最后强调一点:以上算法得到的结果不是有序的, 要得到有序的结果又两种选择:1. 对以上算法所得的结果进行全排列 2. 不采用递归方法而采用深搜策略。

热心网友 时间:2022-06-20 23:31

public class Test{
static public void swapTwo(final int a[], final int k1, final int k2){
int t=a[k1]; a[k1]=a[k2]; a[k2]=t;
}
static public void permutation(final int a[], final int level, final int n){
if(level==n){
for(int i=0;i<n;i++) System.out.print(a[i]+" ");
System.out.println();
}else for(int i=level;i<a.length;i++){
swapTwo(a, level, i);
permutation(a, level+1, n);
swapTwo(a, i, level);
}
}
public static void main(String[] args) {
int a[]={3,7,9};
permutation(a, 0, 3);
}
}
========
3 7 9
3 9 7
7 3 9
7 9 3
9 7 3
9 3 7

热心网友 时间:2022-06-20 23:31

全排列?
用指针啊追问我是新手来着……
完全不懂啊……
请大侠不吝赐教~~~~~~~~

追答首先你要学会简化代码的结构,这种问题肯定是用递归解决。 递归的第一目标就是要将结构简化到最简。类似于这样
public 递归方法(参数列表){
if(列表的元素只有两个){
输出:“元素一元素二”
输出:“元素二元素一”
}else{
//此时元素有两个以上,这时候要使用递归
递归方法(参数列表)//使用递归方法将元素细分
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
被培训机构骗了,他们耍无赖不退钱,如果我把他公司砸到他们骗走我的钱... 木地板的类型以及可以使用的拖把 冯小刚脸有红斑!可以去东北步行街特产店买百草之王人参!吃段时间就好... Empires &amp; Allies – 社交网络 UID 是什么?我如何找到它? Empires &amp; Allies – Regarder pour gagner (RG) – FAQ Empires &amp; Allies – 如何建造并升级基地营地? 男领导是喜欢这个女人吗? 地雷战纪念馆的主要展览 我想问一下打火机爆炸能伤人吗 万能焊条可以用打火机烧吗? JAVA 字符排序算法题 题目在下面谢谢; java编写一个方法 找出一个数组里所有数组元素的排列例:输入{7,2,3} 返回{723,732,327,372,237,273} 我希望将123、132、213、231、312、321全排列输出为1,2,3,请大侠给出算法或者java代码,谢谢! 蒜发芽了还能种吗 java 排列:list 这四个字母有多少中排列组合方式?变成打印出来 java怎么排列出一组数字所有排列方式 我的电脑显示不出D盘了,这个是怎么回事? 今天打开电脑D盘不见了,怎么弄,求大神解答 lol挂机举报反馈消息哪里可以看到?TP已经看不到,不要再拿TP烦老子。 LOL举报之后怎么看他有没有被惩罚 纸黄金是如何定价的? 纸黄金白银与黄金白银T+D哪个好? 做兴业银行银行的黄金T+D和炒纸黄金有什么区别? 黄金td和纸黄金谁比较好 黄金TD和纸黄金的不同? 请问黄金白银T+D与银行纸黄金纸白银的区别有哪些,各自优劣势分别有哪... 纸黄金和黄金T+D的区别? 纸黄金和黄金T+D有什么区别 黄金T+D和纸黄金有什么区别? 小米手机mix3黑色主题省电吗? 大蒜发芽后可以当绿植吗放客厅可以吗 java算法求解。 1.有10张1元、10张5元、10张10元在一堆。抓一把共有多少种结果? 一道Java编程题,使用递归来做。 大蒜发芽了可以种在地里吗 C# 或java 穷举算法、 求高手解答本“实现数组全排列”的算法思想的详细思路。 春天大蒜发芽能种吗?怎么种呢? java解释 蒜头发芽后栽在土里长出来的是蒜苗还是大蒜? 带糖字的女孩乳名 带糖字的乳名 带“糖”字的小名!!! 带糖字的女孩名字好不好? 给宝宝起个带糖字的小名 带糖字的女孩名字 请大家帮我想个小名,和猫有关,或者和糖有关就是带猫字或者带糖字 王姓带糖字的女孩名字 姓任带糖字的女孩名字 和糖有关的男孩男孩小名 求糖字的男孩乳名,已经有个姐姐叫糖豆了