递归加暴力打表,求c(n,m)中m种组合方案,总和为素数
2014-05-16 19:24
197 查看
Problem Description
魁地奇是巫师世界中最重要的体育运动。每个人都关注着魁地奇。魁地奇是一种高速进行的,危险而又激动人心的运动,比赛中的两支球队骑着飞天扫帚竞争,每场比赛将鬼飞球投入巨大的草地球场两端圆环次数多的一队获胜。哈利波特想到了一种必胜的方法,格兰芬多学院里共有N支队(N<=20),每个队已知人数,哈利波特从中挑选K(K<=N)支分队去参加比赛。邓布利多分析后告诉哈利,队伍总人数为素数时,才能必胜!哈利不仅魔法差,数学也差,只听赫敏说过素数是只能被1和自身整除的数,但赫敏现在不在,他请你帮忙计算有多少种必胜的方法。Input
第一行是测试数据的组数T(T<=10),接下来是各组测试数据,每组测试数据先给出N,K,然后是另起一行N个数字,表示N支部队的人数。Output
每组测试数据请输出一个整数,表示方案数。Sample Input
1 5 2 2 3 8 9 999
Sample Output
4
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>using namespace std;int count1, k;int n;const int maxn1 = 100+10, maxn2 = 1000000+100;int ans[maxn2], tot;int a[maxn1];bool Isprime[maxn2];void getPrime(){tot = 0;memset(Isprime,true,sizeof(Isprime));for(int i = 2 ;i <= maxn2; i++){if(Isprime[i]){tot++;ans[tot] = i;}for(int j = 1; ((j <= tot) && (i*ans[j] <= maxn2)); j++){Isprime[i*ans[j]] = false;if(i%ans[j] == 0)break;}}}void dfs(int pos,int kk, int sum){if(kk > k){//printf("%d\n",sum);if(Isprime[sum])count1++;/*for(int i = 1; i <= k; i++){printf("%d ",a[i]);}printf("\n");*/return;}for(int i = pos+1; i <= n; i++){dfs(i,kk+1,sum+a[i]); //这意味着第k个数的位置是i;}}int main(){int T = 0;scanf("%d",&T);getPrime();while(T--){scanf("%d%d",&n,&k);for(int i = 1; i <= n; i++){scanf("%d",&a[i]);}count1 = 0;dfs(0,1,0);printf("%d\n",count1);}return 0;}
相关文章推荐
- 【ZOJ3921 2016年浙大2月月赛J】【题目观察 暴力 大组合数】Musical Notes n个数,数值为1 2 4 8 16,和恰为m方案数
- hdu 5104 筛素数打表+暴力枚举
- LightOJ - 1259 Goldbach`s Conjecture 素数打表+暴力(我见过的最快的打表姿势)
- 利用分治思想,写一个求解从n个元素里选取m个有多少种组合方案的(非递归)高性能算法
- HRBUST OJ 1660 素数矩阵(素数打表,暴力)
- hdoj 反素数 2521 (打表&暴力)
- 【Codeforces Round 272 (Div 2)B】【暴力dfs or 组合数】Dreamoon and WiFi 问号填加减方案数使得最后恰好增量为aim
- 蓝桥杯 购物券消费方案 递归暴力 解题报告
- HDU 5812 Distance 暴力+素数打表
- Smith Numbers 素数打表+暴力+求素因子+poj
- hdu 1431 素数回文(暴力打表,埃托色尼筛法)
- HDU 1016.Prime Ring Problem【DFS(递归)】【素数打表】【8月17】
- hdoj 1431 素数回文 【暴力打表】
- POJ 2739 Sum of Consecutive Prime Numbers(素数打表 + 暴力)
- lightoj 1259 - Goldbach`s Conjecture【素数打表】
- 用c#进行递归组合
- Logtail技术分享(一) : Polling + Inotify 组合下的日志保序采集方案
- 素数打表
- poj 3126(素数打表)
- 暴力递归 转 动态规划