选数(洛谷P1036题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
选数(洛谷P1036题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
P1036題目鏈接
分析
用遞歸的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);}}總結
以上是生活随笔為你收集整理的选数(洛谷P1036题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法分析与设计】找出缺失的一个整数问题
- 下一篇: 遍历Map要选择好的遍历方式(洛谷P10