首页 新闻 搜索 专区 学院

求一个排列算法

1
悬赏园豆:10 [待解决问题]

已知:1、2、3、4、5五个字符进行组合,组合中每个字符仅用1次。排除不同顺序出现的组合,如123组合后排除231、321的可能。
求一个算法:当组合后的字符串为N位(1~5)时有多少组合的可能性?

碧海清天的主页 碧海清天 | 初学一级 | 园豆:156
提问于:2019-03-21 09:35

我试了下可以1到9多少位都可以用这个计算,条件不同就改下参数

一曲相思 2年前
< >
分享
所有回答(3)
0

这不就是组合的公式吗?5X4X...X(5-N+1)/N!

会长 | 园豆:10074 (专家六级) | 2019-03-21 09:53
0

统计学里面的C51, C52 ,C53 C54 延伸为 抓球问题,袋子里有5个不同的球,小明要抓两个球

非常简陋版,没有做边缘判断

using System;

namespace SortFactorialSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(GetTopValue(5, 3) / Factorial(3));
        }

        public static int GetTopValue(int end, int top)
        {
            int sum = 1;
            for (int i = 0; i < top; ++i)
            {
                sum = sum * end;
                end--;
            }
            return sum;
        }

        public static int Factorial(int num)
        {
            if (num == 1)
                return 1;
            else
                return num * Factorial(num - 1);
        }
    }
}
BUTTERAPPLE | 园豆:2974 (老鸟四级) | 2019-03-21 12:26
0

package com.test;

public class test01 {
public static void main(String[] args) {
int number=5;//1到number
int num=0; //记录每个数字出现的次数
int nums=0; //生成的数字总量
int number1=3;
//计算每个数字出现的次数
for(int i=number1-1;i<number;i++){
num+=(number-i);
}
System.out.println("每个数字现现次数"+num);
nums=num*number/number1;
System.out.println("总共可生成"+nums+"个不重复数字");
}
}

一世红尘 | 园豆:321 (菜鸟二级) | 2019-03-21 16:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册