RT, 从小到大列出123 132 213 231 312 321想了一上午,没想出方法,高手帮帮我

解决方案 »

  1.   

    for(int i=1;i<4;i++)
    {
       for(int j=1;j<4;j++)
       {            for(int k=1;k<4;k++)
                {
                    if(i!=j && j!=k && i!=k)
                    {
                          System.out.println(i+""+j+""+k);
                    }
                }
       }
    }
      

  2.   


    int[] num = {1,2,3};
    for(int i = 0;i < 3;i++){
      System.out.print(num[i]);
      for(int j = 0;j < 3;j++){
        if(j != i){
          System.out.print(num[j]);
          System.out.println(num[3-i-j]);
        }
      }
    }
      

  3.   


    // nums为输入可选数集合,count输出其中几个
    public static void printCom(int[] nums, int count) {
    innerPriCom(nums, count, 0, count);
    } private static void innerPriCom(int[] nums, int count, int foIndex,
    int lgIndex) {
    if (foIndex == count) {
    for (int i = 0; i < count; i++) {
    System.out.print(nums[i] + " ");
    }
    System.out.println();
    return;
    }
    innerPriCom(nums, count, foIndex + 1, lgIndex);
    for (int i = lgIndex; i < nums.length; i++) {
    nums[foIndex] ^= nums[i];
    nums[i] ^= nums[foIndex];
    nums[foIndex] ^= nums[i];
    innerPriCom(nums, count, foIndex + 1, i + 1);
    nums[foIndex] ^= nums[i];
    nums[i] ^= nums[foIndex];
    nums[foIndex] ^= nums[i];
    }
    }这是个扩张了点的方法 
    可以指定使用数组中几个数字
      

  4.   


    public class Test {
    public static void main(String[] args) { 
    for(int i=1;i<4;i++){
    for(int j=1;j<4;j++){
    for(int k=1;k<4;k++){
    if(i==j||i==k||j==k)
    continue;
    else
    System.out.println(i*100+j*10+k);
    }
    }
    }
    }
    }
      

  5.   

    我在4楼贴错代码了  那个是组合
    下边这个是楼主要求的排列 public static void combination(int[] arr){
    comCombination(arr, 0);
    }

    private static void comCombination(int[] arr, int index) {
    if (index == arr.length - 1) {
    for (int i = 0; i < arr.length; i++) {
    System.out.printf("%d",arr[i]);
    }
    System.out.println();
    return;
    }
    comCombination(arr, index + 1);
    for (int i = index + 1; i < arr.length; i++) {
    arr[index] ^= arr[i];
    arr[i] ^= arr[index];
    arr[index] ^= arr[i];
    comCombination(arr, index + 1);
    arr[index] ^= arr[i];
    arr[i] ^= arr[index];
    arr[index] ^= arr[i];
    }
    }
      

  6.   

    可以用3个for loopspublic class Bigger {    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] array = new int[3];
    for (int i = 1; i <= 3; i++) {
        array[0] = i;
        for (int j = 1; j <= 3; j++) {
    if (j != i) {
        array[1] = j;

    else
        continue;
    for (int k = 1; k <= 3; k++) {
        if (k != i && k != j) {
    array[2] = k;
    for (int m = 0; m < 3; m++) {
        System.out.print(array[m] + "  ");
    }
    System.out.println("  ");
        }
    }
        }
    }    }}
      

  7.   

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;public class Test {
    public static void main(String[] args){
    int[] num={1,2,3};
    List<Integer> list=new ArrayList<Integer>();
    for(int i=0;i<num.length;i++){
    for(int j=0;j<num.length;j++){
    if(j!=i){
    list.add(num[i]*100+num[j]*10+num[3-i-j]);
    }
    }
    }
    Collections.sort(list);
    for(int i=0;i<list.size();i++){
    System.out.print(list.get(i)+" ");
    }
    }}
      

  8.   

    三楼答案有问题啊!
    用层循环就可以了
    int[]x={1,2,3};
    for(int i=0;i<3;i++)
    {
    for(int j=0;j<3;j++)
    {
    if(i!=j)
    {
    //System.out.println(x[i]+""+x[j]);
    for(int k=0;k<3;k++)
    {
    if(k!=i&&k!=j)
    {
    System.out.println(x[i]+""+x[j]+""+x[k]);
    }
    }
    }
    }
    }
      

  9.   

    谢谢提醒!
    改下输入语句的位置就可以了 int[] num = {1,2,3};
    for(int i = 0;i < 3;i++){
      for(int j = 0;j < 3;j++){
    if(j != i){
      System.out.println(num[i]+""+num[j]+""+num[3-i-j]);
    }
      }
    }