专题1—D - 加法大湿

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


D - 加法大湿

#include <stdio.h>
#define N 21
int arr[N];
int ans;
int n, k;
int prime(int n);
void dfs(int sum, int cnt, int flag);
void dfs(int sum, int cnt, int flag) //总和、个数、标记
{
    if (k == cnt)
    {
        if (prime(sum))
        {
            ans++;
        }
        return;
    }
    for (int i = flag; i <= n; i++)
    {
        dfs(sum + arr[i], cnt + 1, i + 1);
    }
}
int prime(int n)
{
    if (n == 1)
    {
        return 0;
    }
    for (int i = 2; i < n; i++)
    {
        if (!(n % i))
        {
            return 0;
        }
    }
    return 1;
}
int main()
{
    int i;
    scanf("%d%d", &n, &k);
    for (i = 1; i <= n; i++)
    {
        scanf("%d", &arr[i]);
    }
    dfs(0, 0, 1);
    printf("%d\n", ans);
    return 0;
}

这题比较难的也就是给定n求组合数了。况且这个又不是全排列。所以相对而言比全排练简单。


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6