1. 程式人生 > >a,b,c,d,e,f六個字母可以構成多少沒有重複的字串。

a,b,c,d,e,f六個字母可以構成多少沒有重複的字串。

這是一個排列組合問題

public class Test3_2
{
//	//求階乘,這個不需要了
//	public static int factorial(int n)
//	{
//		int result=1;
//		for(int i=n;i>1;i--)
//		{
//			result*=i;
//		}
//		return result;
//	}
	//求排列數
	public static int A(int up,int bellow)
	{
		int result=1;
		for(int i=up;i>0;i--)
		{
			result*=bellow;
			bellow--;
//			System.out.println("i="+i);
//			System.out.println("result="+result);
		}
		return result;
	}
	//求組合數,這個也不需要了。
	public static int C(int up,int bellow)
	{
//		int denominator=factorial(up);//分母up的階乘
		int denominator=A(up,up);//A(6,6)就是求6*5*4*3*2*1,也就是求6的階乘
		int numerator=A(up,bellow);//分子的排列數
		return numerator/denominator;
		
	}
	//求排列數:
	public static void main(String[] args)
	{
		//求4的階乘
//		factorial(4);
//		System.out.println(factorial(4));//24
////		求A(3,6)=6*5*4=120
//		System.out.println(A(3,6));//120
//		System.out.println(A(1,6));//6
//		System.out.println("A(2,6)="+A(2,6));//30
//		System.out.println("C(3, 6)="+C(3, 6));//C(3,6)=6*5*4/3*2*1=20;
//		System.out.println("C(1,6)="+C(1, 6));
		
		String[] strs={"a","b","c","d","e","f"};
		int length=strs.length;
		int sum=0;
		for(int i=1;i<=length;i++)
		{
			System.out.println("A("+i+","+length+")="+A(i,length));
			sum+=A(i,length);
		}
		System.out.println("sum="+sum);
	}
	
}