| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1196 人关注过本帖
标题:一道关于选数的题目
只看楼主 加入收藏
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
 问题点数:0 回复次数:14 
一道关于选数的题目

已知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)。 [输入]:键盘输入,格式为: n,k (1≤n≤20,k<n) x1,x2,…xn (1≤xi≤5000000) [输出]:屏幕输出 ,格式为: 一个整数(满足条件的种数)。 [输入输出样例]: 输入:  4 3  3 7 12 19 输出:  1

搜索更多相关主题的帖子: 计算 键盘 
2004-08-11 14:47
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 

咦!怎么没有人做?

2004-08-12 11:57
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
会做的赶快啊! 3天后给出答案
2004-08-12 15:27
kuangjingbo
Rank: 1
等 级:新手上路
帖 子:312
专家分:0
注 册:2004-4-24
收藏
得分:0 

此问题的关键在于如何从n个数中选取k个数的组合!需要一个算法.

组合数学中有现成的算法.可是我忘了!


永不放弃!
2004-08-12 18:57
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
想想吧,其实不是很难的
2004-08-12 19:01
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 

会做的赶快!!!

离公布答案还剩: 2 天

2004-08-13 15:13
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
以下是引用flylee在2004-08-11 14:47:34的发言:

已知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)。 [输入]:键盘输入,格式为: n,k (1≤n≤20,k<n) x1,x2,…xn (1≤xi≤5000000) [输出]:屏幕输出 ,格式为: 一个整数(满足条件的种数)。 [输入输出样例]: 输入:  4 3  3 7 12 19 输出:  1

题目有问题啊!你的n个整数是要输入还是给定的?是全部输入完n个整数然后随机挑k个吗?

2004-08-14 00:13
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 

[QUOTE]以下是引用live41在2004-08-14 00:13:55的发言:

题目有问题啊!你的n个整数是要输入还是给定的?是全部输入完n个整数然后随机挑k个吗?[/QUOTE] 你没有看见我输入输出样例吧? n个整数是需要输入的。而k个数的挑选是要自己编写的,需要找出所有k个数的组合,这才是这道题的关键

2004-08-14 00:26
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

论坛人气不够,你的问题没人考虑是正常的,我感兴趣,但没时间,我正在向MFC迈进。

[此贴子已经被作者于2004-08-14 20:39:26编辑过]

2004-08-14 20:38
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 

这么多天都没有人做,我把答案沾出来,也希望可以有人给出更好的的代码

#include <iostream> #include <conio.h> #include <cmath> using namespace std;

int checker(int x);

int main() { int m, n; cout<<"\nInput:\n"; cin>>m>>n;

if(m<0 || n<0 || m<n){ cout<<"m>n>0"; cout<<"\nPress anykey to exit..."; getch(); return 1; }

int data[100], *p[100]; int s=0;

for(int i=0; i<m; i++) cin>>data[i];

for(int v=0; v<n; v++) p[v] = data+v;

do{ int sum=0; for(i=0; i<n; i++) sum += *(p[i]);

if(checker(sum)) s++;

if(p[n-1]==data+m-1){ int a = n - 2, b = m - 2; do{ if(p[a] != data+b) break;

if(a==0) goto pri; a--; b--; }while(1);

p[a]++;

for(v=a+1, i=1; v<n; v++, i++) p[v] = p[a] + i; } else p[n - 1]++; }while(1);

pri: cout<<"\nOutput:\n"<<s;

getch(); return 0; }

int checker(int x) { for(int i=2; i<=int(sqrt(x)+1); i++) if(x % i == 0) return 0;

return 1; }

2004-08-15 09:43
快速回复:一道关于选数的题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017108 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved