面试算法题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
2016-11-16 20:18
489 查看
题目
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?这个题目还是网上找的。
思路
这个没什么好思路目前。想到的最通用的办法就是:先找出四个数字的其中三个,然后分别把这三个数字可以排布的顺序打印出来。三个数字进行排布,C++会用链表,每次遍历一次链表输出一次,然后头结点断开,第二个节点成为新的头结点,然后尾节点指向原来的头结点。java里不知道用什么好,这里就用数组进行位移了,感觉特别不好,请知道的指点一下。
这个思路其实并不太好,有更好的方式请告知一下,谢谢。
至于个数是A(4,3)=4*3*2=24;
代码
public static void main(String[]args){ int a[]={1,2,3,4}; int N=a.length; int[][] b=new int[a.length][a.length-1]; fun1234(); select3of4(a,b); makeNum(b[3]); for (int i = 0; i < N; i++) { makeNum(b[i]); } } //4个数字中找出3个数字,这个算法应该有很多,存储方式也很多。 private static void select3of4(int a[],int[][] b) { int N=a.length; int m,n; for (int i = 0; i < N; i++) { m=0; n=0; while(m<N){ if(m!=i){ b[i] =a[m]; n++; } m++; } } } //每次顺序移动一次数组,然后输出。这样可以保证不重复 private static void makeNum(int a[]) { int N=a.length; for (int k = 0; k < N; k++) { for (int i = 0; i < N; i++) { System.out.print(a[i]); } System.out.println(); for (int i = 0; i < N; i++) { System.out.print(a[N-i-1]); } System.out.println(); flow(a); } } //顺序移位 private static void flow(int a[]){ int tmp=a[0]; for (int i = 0; i < a.length-1; i++) { a[i]=a[i+1]; } a[a.length-1]=tmp; }
上面的代码其实效率比直接算没太大优势,只是通用性强一些。比如数组改成了{a,c,e,f}这样的也能计算。
直接算的代码如下:private static void fun1234() { // TODO Auto-generated method stub int count = 0; for (int x = 1; x < 5; x++) { for (int y = 1; y < 5; y++) { for (int z = 1; z < 5; z++) { if (x != y && y != z && x != z) { count++; System.out.println(x * 100 + y * 10 + z + " "); } } } } }
相关文章推荐
- Java经典算法:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 算法:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- java经典算法_011有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- [Java] 练习题011: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 【python】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- [Java] 练习题011: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- [Java] 练习题011: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 问题十七:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- [Java] 练习题011: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- java-有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?