博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2245
阅读量:5158 次
发布时间:2019-06-13

本文共 855 字,大约阅读时间需要 2 分钟。

题目分析:
抽奖
在德国乐透你需要从49个数(1,2,3......49)里面选择6个数,玩德国乐透一个流行的策略-尽管他不会增加你获奖的机会-选择一个子集S包含k(k>6)个数从这49个数字里面选择,然后从这S个数里面选择,例如K=8并且S={
1,2,3,5,8,13,21,34}有28种可能。
[1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ... [3,5,8,13,21,34]. 
你的工作就是找出来所有的可能
好吧,我是想到了深搜- -
也应该是分治策略。
*************************************************************************************************************
#include<stdio.h>
#define maxn 100
int f[maxn];
void Find(
int a[], 
int N, 
int k)
{
    
int i;
    
if(k == 
6)
    {
        
for(i=
0; i<
6; i++)
            printf(
"
%d%c
", f[i], i==
5?
'
\n
':
'
 
');
        
return ;
    }
    
for(i=
0; i<N; i++)
    {
        f[k] = a[i];
        Find(a+i+
1, N-i-
1, k+
1);
    }
}
int main()
{
    
int n, k=
0;
    
while(scanf(
"
%d
", &n), n)
    {
        
int i, a[maxn];
        
if(k++)printf(
"
\n
");
        
for(i=
0; i<n; i++)
            scanf(
"
%d
", &a[i]);
        Find(a, n, 
0);
    }
    
return 
0;

} 

转载于:https://www.cnblogs.com/liuxin13/p/4383988.html

你可能感兴趣的文章
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty&#39;s Blocks
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
js兼容公用方法
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>