>  기사  >  Java  >  Java의 조합 배열 문제에 대한 솔루션

Java의 조합 배열 문제에 대한 솔루션

高洛峰
高洛峰원래의
2017-03-09 18:58:111343검색

이 글에서는 Java의 조합 배열 문제를 해결하는 방법을 소개합니다

1.

4명 중 2명을 선택해 이벤트에 참여하게 됩니다.

n명 중에서 m명을 선택해서 이벤트에 참여하는 방법은 몇 가지인가요?

C(m/n)=C((m-1)/(n-1))+C(m/(n-1)) 수학적 알고리즘


public class Main {	
	public static void main(String[] args) {
		System.out.println("请输入总人数:");
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		System.out.println("请输入选择人数:");
		int m=sc.nextInt();
		System.out.println("一共有"+fun(n,m)+"种方法!");
	}	
	private static int fun(int n, int m) {		
		if(m>n)return 0;		
		if(m==0)return 1; 		
		return fun(n-1,m-1) + fun(n-1,m);
	}
}

2.

3A와 2B의 배열이 몇 개나 형성될 수 있는지 계산하는 문제(예: AAABB, AABBA) 조합수학의 연구분야

입니다. 그러나 어떤 경우에는 컴퓨터의 빠른 컴퓨팅 속도를 활용하여 영리한 추론을 통해 문제를 해결할 수도 있습니다.

다음 프로그램은 m A와 n B를 얼마나 많은 배열로 결합할 수 있는지 계산합니다. 개선해주세요.

A(n/m)=A(n/(m-1))+A((n-1)/m)


public class Main {
	public static void main(String[] args) {
		int m=3;
		int n=2;
		System.out.println(pailie(m, n));
	}
	public static int pailie(int m,int n){	
		if (m==0||n==0)return 1;	
		return pailie(m-1,n)+pailie(m, n-1); 
	}
}

방법 2

public class Main {
	public static void main(String[] args) {
		char[] date="ABC".toCharArray();
		f(date,0);
	}
	private static void f(char[] date, int k) {	
		if (k==date.length) {
			for (int i = 0; i < date.length; i++) {
				System.out.print(date[i]+" ");
			}
			System.out.println();
		}	
		for (int i = k; i < date.length; i++) {
			{char t=date[k];date[k]=date[i];date[i]=t;}//试探		
			f(date,k+1);		
			{char t=date[k];date[k]=date[i];date[i]=t;}//回溯
		}	
	}
}

위 내용은 Java의 조합 배열 문제에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.