zoukankan      html  css  js  c++  java
  • 1008 选数

    1008 选数

    2002年NOIP全国联赛普及组

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold 
     
    题目描述 Description

    已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:
        3+7+12=22  3+7+19=29  7+12+19=38  3+12+19=34。
      现在,要求你计算出和为素数共有多少种。
      例如上例,只有一种的和为素数:3+7+19=29)。

    输入描述 Input Description

     键盘输入,格式为:
      n , k (1<=n<=20,k<n)
      x1,x2,…,xn (1<=xi<=5000000)

    输出描述 Output Description

    屏幕输出,格式为:
      一个整数(满足条件的种数)。

    样例输入 Sample Input

    4 3
    3 7 12 19

    样例输出 Sample Output

    1

    数据范围及提示 Data Size & Hint

    (1<=n<=20,k<n)
    (1<=xi<=5000000)

    思路:深搜。

     1 #include<iostream>
     2 using namespace std;
     3 #include<cmath>
     4 #include<cstring>
     5 int n,k;
     6 int sum,ans;
     7 int num[30];
     8 bool vis[30];
     9 bool pd(int a)
    10 {
    11     for(int i=2;i<=sqrt(a);++i)
    12     if(a%i==0)return false ;
    13     return true;
    14 }
    15 void dfs(int a,int s)
    16 {
    17     if(s==k)
    18     {
    19         if(pd(sum))ans++;
    20         return ;
    21     }
    22     for(int i=a;i<=n;++i)
    23     {
    24         if(!vis[i])
    25         {
    26             vis[i]=1;
    27             sum+=num[i];
    28             dfs(i,s+1);
    29             sum-=num[i];
    30             vis[i]=0;
    31         }
    32     }
    33 }
    34 int main()
    35 {
    36     cin>>n>>k;
    37     for(int i=1;i<=n;++i)
    38     {
    39         cin>>num[i];
    40     }
    41     for(int i=1;i<=(n-k+1);++i)
    42     {
    43         memset(vis,0,sizeof(vis));
    44         sum=num[i];
    45         vis[i]=1;
    46         dfs(i,1);
    47         
    48     }
    49     cout<<ans;
    50     return 0;
    51 }
  • 相关阅读:
    ASP.NET
    JS、JQury
    ASP.NET
    ASP.NET
    ASP.NET
    C#
    C#
    C#
    基础算法-树:预备知识
    开发环境配置--Ubuntu+Qt4+OpenCV(二)
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6747042.html
Copyright © 2011-2022 走看看