組み合わせの数(DFS)を求めます
質問する
組み合わせの数を求めましょう
5 C 2=1,2,3,4,5から2つの数字を抽出して組み合わせることができる数.조합수의 공식
nCr = (n-1)C(r-1) + (n-1)C(r)
コード#コード# public class CombinationNumber {
static int[][] memo = new int[35][35];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int r = sc.nextInt();
memo = new int[n+1][n+1];
System.out.println(dfs(n,r));
}
public static int dfs(int n, int r){
if(n==r || r==0){
return 1;
}else{
if(memo[n][r] != 0) return memo[n][r];
return memo[n][r] = dfs(n-1, r-1) + dfs(n-1, r);
}
}
}
説明:
これはアルゴリズムを用いて組合せ数という数学概念の問題を解決する.あなたはdfsの問題の仕方を把握していると思います.これまで,伸び続けるdfs問題を解くことを主としていたためか,式にdfsを加える方法はすぐには考えられなかった.
組み合わせ数の数学の概念を熟知すればいい.
規則付き数式+規則付き数式=dfs(規則)+dfs(規則)
Reference
この問題について(組み合わせの数(DFS)を求めます), 我々は、より多くの情報をここで見つけました
https://velog.io/@ililil9482/조합수-구하기-DFS
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
public class CombinationNumber {
static int[][] memo = new int[35][35];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int r = sc.nextInt();
memo = new int[n+1][n+1];
System.out.println(dfs(n,r));
}
public static int dfs(int n, int r){
if(n==r || r==0){
return 1;
}else{
if(memo[n][r] != 0) return memo[n][r];
return memo[n][r] = dfs(n-1, r-1) + dfs(n-1, r);
}
}
}
説明:
これはアルゴリズムを用いて組合せ数という数学概念の問題を解決する.あなたはdfsの問題の仕方を把握していると思います.これまで,伸び続けるdfs問題を解くことを主としていたためか,式にdfsを加える方法はすぐには考えられなかった.
組み合わせ数の数学の概念を熟知すればいい.
規則付き数式+規則付き数式=dfs(規則)+dfs(規則)
Reference
この問題について(組み合わせの数(DFS)を求めます), 我々は、より多くの情報をここで見つけました
https://velog.io/@ililil9482/조합수-구하기-DFS
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(組み合わせの数(DFS)を求めます), 我々は、より多くの情報をここで見つけました https://velog.io/@ililil9482/조합수-구하기-DFSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol