已知:1、2、3、4、5五个字符进行组合,组合中每个字符仅用1次。排除不同顺序出现的组合,如123组合后排除231、321的可能。
求一个算法:当组合后的字符串为N位(1~5)时有多少组合的可能性?
这不就是组合的公式吗?5X4X...X(5-N+1)/N!
统计学里面的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);
}
}
}
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+"个不重复数字");
}
}
我试了下可以1到9多少位都可以用这个计算,条件不同就改下参数
– 一曲相思 5年前