递归+DFS(洛谷P1036题题解,Java语言描述)
程序员文章站
2024-03-17 21:04:58
...
题目要求
分析
用递归的DFS来凑组合情况,别忘了判断素数。。。
AC代码(Java语言描述)
import java.util.Scanner;
public class Main {
private static int num, k;
private static int[] array = new int[25];
private static long result;
private static boolean isPrime(int a){//判断素数
for(int i = 2; i*i <= a; i++) {
if(a % i == 0) {
return false;
}
}
return true;
}
private static void dfs(int m, int sum, int starts) {
if(m == k) {
if(isPrime(sum)) {
result++;
}
return;
}
for(int i = starts; i < num; i++) {
dfs(m+1, sum+ array[i], i+1);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
num = scanner.nextInt();
k = scanner.nextInt();
for(int i = 0; i < num; i++) {
array[i] = scanner.nextInt();
}
dfs(0, 0, 0);
System.out.println(result);
}
}
推荐阅读
-
递归+DFS(洛谷P1036题题解,Java语言描述)
-
洛谷入门题P1008、P1035、P1423、P1424、P1980题解(Java语言描述)
-
巧用异或运算符(洛谷P1161题题解,Java语言描述)
-
洛谷入门题P1046、P1047、P1427、P1428、P2141、P1567题解(Java语言描述)
-
洛谷P1534题解(Java语言描述)
-
三角形分类(洛谷P5717题题解,Java语言描述)
-
动态规划求解"疯狂的采药"问题(洛谷P1616题题解,Java语言描述)
-
用贪心策略均分纸牌(洛谷P1031题题解,Java语言描述)
-
最大公约数和最小公倍数问题(洛谷P1029题题解,Java语言描述)
-
加括号改变连除式结果(洛谷P2651题题解,Java语言描述)