当前位置: 代码迷 >> J2SE >> 面试一个编程题,没做出来帮小弟我看看
  详细解决方案

面试一个编程题,没做出来帮小弟我看看

热度:91   发布时间:2016-04-24 13:17:10.0
面试一个编程题,没做出来帮我看看
现在有int sss [] = {4,5,8,9},写一段程序让程序输出sss这个数组的所有排序!
比如说4,5,8,9
4,5,9,8
4,9,5,8
4,9,8,5等等所有的排序种类,总共应该是24种,这个程序应该怎么编写?谢谢


------解决方案--------------------
最苯的就是定义好四个ABCD,然后。。。。。。。。,我也忘了,嘿嘿。
------解决方案--------------------
怎么没人回贴
------解决方案--------------------
用循环啊
------解决方案--------------------
递归
------解决方案--------------------
Java code
public class Test {    private void queue(int[] sss, int[] ss1) {        if (sss.length > 1) {            int[] yyy = new int[sss.length - 1];            int[] yy1 = new int[ss1.length + 1];            for (int i = 0; i < sss.length; i++) {                int sum;                for (int j = 0; j < yyy.length; j++) {                    if (j < i)                        sum = j;                    else                        sum = j + 1;                    yyy[j] = sss[sum];                }                for (int k = 0; k < ss1.length; k++) {                    yy1[k] = ss1[k];                }                yy1[yy1.length - 1] = sss[i];                queue(yyy, yy1);            }        } else {            for (int s : ss1)                System.out.print(s + " ");            System.out.println(sss[0]);        }    }    public void taxis(int[] sss) {        int[] ss1 = new int[0];        queue(sss, ss1);    }    public static void main(String[] args) {        int[] sss = { 4, 5, 8, 9 };        Test test = new Test();        test.taxis(sss);    }}
------解决方案--------------------
多重循环排下 没想到其他办法
------解决方案--------------------
用递归最好解决。。。
或者用N(N=sss.length)重循环。。。
------解决方案--------------------
关注....
------解决方案--------------------
我想了一小时还没写出来呢,总考虑不周到,落伍了!!
------解决方案--------------------
void Perm(int list[], int k, int m) { 
int i;
if (k == m) {
for (i = 0; i <= m; i++)
cout << a[i] << " ";
cout << endl;
} else
for(i=k; i <= m; i++) {
Swap(list[k], list[i]);
Perm(list, k+1, m);
Swap(list[k], list[i]);
}
}

void Swap(int & a, int &b) {
int t = a;
a = b;
b = t;
}
------解决方案--------------------
推荐看看java版的数据结构
------解决方案--------------------
6楼写的不错,我看了一会 写了一个 没执行出来.
这种算法 最重要是思想. 看你怎么去想了.
------解决方案--------------------
方法一
应用回溯法,每个数的取法都有N个方向(1——N),当取够N个数时,输出一个排列,然后退后一步,取前一个数的下一个方向(即前一个数+1),并且要保证所有数字不能重复。当前数字的所有方向都取完时,继续退一步,一直重复到第一个数为止方法二
应用剔除,列出所有的千位数,
1.剔出出现重复数字的数
2.剔出数字中出现不匹配4,5,9,8 
最简单的办法是
System.out.println("4,5,9,8")
.....
写24个
------解决方案--------------------
[code=Java][/code]
/*
 * 现在有int sss [] = {4,5,8,9},写一段程序让程序输出sss这个数组的所有排序! 
 * 比如说4,5,8,9 
 * 4,5,9,8 
 * 4,9,5,8 
 * 4,9,8,5等等所有的排序种类,总共应该是24种,这个程序应该怎么编写?谢谢 
 * 
  相关解决方案