洛谷題解P1036 選數
一、題目
https://www.luogu.org/problemnew/show/P1036
二、程式碼
#include <iostream> using namespace std; bool isprime(int a) { for(int i=2;i*i<=a;i++) { if(a%i==0) { return false; } } return true; } int n,k; int a[25]; bool visited[25]; long long ans=0; // select,已選多少個數 // sum為已選的數之和 // start,從哪個數開始選的,最初肯定是從第0個數開始選,列舉完後要從第1個數開始選 …… void dfs(int select,int sum,int start) { if(select==k) { if(isprime(sum)) { ans++; } return; } for(int i=start;i<n;i++) { if(visited[i]) { continue; } visited[i]=true; dfs(select+1,sum+a[i],i+1); visited[i]=false; } } int main() { cin>>n>>k; for(int i=0;i<n;i++) { cin>>a[i]; } dfs(0,0,0); cout<<ans; return 0; }
少兒程式設計、資訊學競賽諮詢請加微信307591841或QQ群581357582

資訊學競賽公眾號.jpg