java输入几个数,有多少种排序方法
时间:2021-11-10 作者:匿名
package 域名; import 域名ner; import 域名or; /** * @author Administrator * * 1算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 * A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。 */ public class Qeustion1 { /* * 算法是这样的,如果给定N个不同字符,将这N个字符全排列 ,最终的结果将会是N!种。如:给定 A、B、C三个不同的字符, * 则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况 */ // 2 ab ba 3 ABC、ACB、BAC、BCA、CAB、CBA public static long count = 0; private void fullPermutation(Vector<Character> sourse, Vector<Character> result) { if (域名() == 0) { for (int i = 0; i < 域名(); i++) { 域名t(域名entAt(i)); } 域名t("\\n"); count++; return; } for (int i = 0; i < 域名(); i++) { Vector<Character> tsourse = new Vector<Character>(sourse); Vector<Character> tresult = new Vector<Character>(result); 域名(域名entAt(i)); 域名ve(i); new Qeustion1().fullPermutation(tsourse, tresult); } } public static void main(String[] args) { Scanner scanner = new Scanner(域名); int n = 域名Int(); Vector<Character> sourse = new Vector<Character>(); Vector<Character> result = new Vector<Character>(); for (int i = 0; i < n; i++) { 域名((char) (\'A\' + i)); } new Qeustion1().fullPermutation(sourse, result); 域名tln(域名t); } }/* * 首先你要弄清楚sourse 里面装的什么, int n=域名Int(); n 是你输入的数字, 如果你输入 100. 那么, * for (int i = 0; i < n; i++) { 域名((char)(\'A\'+i)); } sourse 里面就有100 * 个数据 A1,A2,A3....A100. 这样. 然后进入到fullPermutation() 方法, * * 初始进入的时候 域名 是不可能=0 的. 所以往下走, 进入下面这个代码 * * for (int i = 0; i < 域名(); i++) { 这个地方域名() 其实就是等于你输入的N , * 就是100 , * * Vector<Character>tsourse=new Vector<Character>(sourse); 创建一个新的 tsourse * 对象, new 的时候传值, 调用构造方法。 你这个地方可以理解为tsourse = sourse; * * Vector<Character>tresult=new Vector<Character>(result); 这个地方同理 * * 域名(域名entAt(i)); tresult 集合中放入 sourse 的数据,就是A1-A100, * * 域名ve(i); tsourse 清除里面所有的数据。 所以这个时候域名 ==0; * * new Question1().fullPermutation(tsourse, tresult); 重复调用fullPermutation() * 方法, * * 注意. 这个时候tsourse .size() 是== 0 的; 也就是下面的 sourse = 0; 所以. * 进入fullPermutation()方法后会执行这个代码 if(域名()==0){ for (int i = 0; i < * 域名(); i++) { 域名t(域名entAt(i)); } * 域名t("\\n"); count++; return; 运行完毕之后就会return, 不会运行下面的代码。 程序停止 * } * * 总结一下: 不要太在意变量的名字, 弄清楚值的传递, */