专题1—D - 加法大湿
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
#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 |