xiaofan861105 2010-10-20 19:25
浏览 224
已采纳

java编程题

有一个整数 0<n<10 输出n的阶乘项 如 当n = 3 时,如 123 132 231 213 312 321 就是输出n的阶乘项 当n = 4 的时候组成的是四位数 , 5的时候是5位数,其中每位上都是不同的。。不重复 当给定一个n 输出所有项
写一个java方法用来实现上述功能

  • 写回答

1条回答 默认 最新

  • ayling520 2010-10-21 09:03
    关注

    [code="java"]
    public class Test8
    {
    /**
    * 排列 用1、2、3这三个数字,打印出所有不同的排列, 如:123、132等
    *
    *
    * @param sb
    * 符合条件的数字
    * @param list
    * 输入的数字
    * @param index
    * 第几位
    * @param k
    * 已经用过的数组下标
    *
    * @return
    */
    public static Object a2(StringBuffer sb, String[] list, int index, String k)
    {
    String[] objs = list;

        for (int i = 0; i < objs.length; i++)
        {
            int ff = 0;
            // 是否第一次,第一次不需要判断是否用过
            if (!k.equals("-1"))
            {
                String[] iss = k.split(",");
                for (int j = 0; j < iss.length; j++)
                {
                    // 判断该数字是否已经用过了
                    if (iss[j].equals(i + ""))
                    {
                        ff = 1;
                        break;
                    }
                }
            }
            if (ff == 1)
            {
                // 用过的数字不能再用,重新计算
                continue;
            }
    
            sb.append(objs[i] + ",");
    
            if (list.length - 1 == index)
            {
                System.out.println(sb.toString());
            }
            else
            {
                a2(sb, objs, ++index, k + "," + i);
            }
            --index;
            sb.delete(sb.length() - 2, sb.length());
        }
    
        return "";
    }
    
    public static void main(String[] args)
    {
        // 输入的数字
        int k = 3;
        StringBuffer in = new StringBuffer();
        for (int i = 1; i <= k; i++)
        {
            in.append(i).append(',');
        }
    
        String[] objs = in.toString().split(",");
        StringBuffer sb = new StringBuffer();
        a2(sb, objs, 0, "-1");
    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘