有一个整数 0<n<10 输出n的阶乘项 如 当n = 3 时,如 123 132 231 213 312 321 就是输出n的阶乘项 当n = 4 的时候组成的是四位数 , 5的时候是5位数,其中每位上都是不同的。。不重复 当给定一个n 输出所有项
写一个java方法用来实现上述功能
java编程题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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系统的硬盘