c++(数据选择)
在数学中,有一些数据选择的内容。举个例子来说,有这样一组数据:1、2、3、4。现在我们打算从中挑选出1个数据,那么有几种选择呢?结果应该是1、2、3、4;那么如果挑选2个数据呢,怎么选呢?那么结果应该是12、13、14、15。以此类推,我们还能挑选出3个数据、4个数据的情况。
那么,在程序上面应该怎么表示呢?其实可以使用递归的方法。请大家和我一起计算一下:
如果需要从1、2、3、4中挑选两个数据,那么是不是先从1开始,然后再2、3、4中挑选一个数据,这样可以有12、13、14三种情况。接着呢,我们从2开始,下面可以选择的数据只有从3、4中选择了,1不能选择了,否则会产生重复选项。以此类推,那我们从4开始的时候,发现4后面没有数据的时候,此时迭代终止。
挑选2个数据如此,那么挑选n个数据是不是也是这样呢?首先选出第1个数据,那么剩下来的数据只能从这个数据后面位置开始挑选,如果挑选出n-1个数据,那么表示n个数据存在,继续寻找到,直到n-1个数据选不出来为止;接着我们移动第一个数据的位置,同样需要在当前数据的后面挑选n-1个数据。以此类推,如果我们发现当前数据后面连n-1个数据都没有了,那么表示递归就结束了。
下面我们就可以书写代码了。
static int gAllData[MAX_NUMBER]= {0};
static int gTotal = 0;
void print(int pData[], int length)
{
int index;
for(index = 0; index < length; index++)
printf("%d", pData[index]);
printf("\n");
}
void traverse(int pData[], int length, int number)
{
int index;
if(0 == length)
return; for(index = 0; index < length; index++){
gAllData[gTotal ++] = pData[index]; if(1 == number)
print(gAllData, gTotal);
else
traverse(pData + (index + 1), length - (index + 1), number -1); gAllData[-- gTotal] = 0;
}
}
c)编写测试用例,验证结果
void test()
{
int data[] = {1, 2, 3, 4, 5, 6};
memset(gAllData, 0, sizeof(int) * MAX_NUMBER);
traverse(data, sizeof(data)/sizeof(int), 4);
}
注:我们可以通过不停修改数组data和数值number的方法,验证打印出来的数据和我们自己计算的结果是否有出入。
c++(数据选择)的更多相关文章
- 性能测试报告的指标选择、数据选择和分析的参考【以Apache AB test为例】
前几天尝试用loadrunner初试了一下性能测试,对于如何选择数据.生成数据后如何分析很是迷惑,刚刚翻看一篇网友的博客,很有条理,特此记录一下,以供参考 转自: http://liriguang.i ...
- ASP.NET MVC页面UI之多级数据选择UI(行业信息、专业信息、职位信息的选择)
多级数据选择操作在开发中是常见的操作,比如选择行业信息时,一般有个大类,每个大类下边又包含很多小类,本文简单实现了弹出窗口一级一级选择功能. 本文博客出处:http://www.kwstu.com/A ...
- 【论文集合】机器翻译NMT中数据打分和数据选择的经典方法
根据Survey of Data-Selection Methods in Statistical Machine Translation的总结,MT中的数据选择分类图如下: 使用场景 数据使用的场景 ...
- HFun.快速开发平台(五)=》自定义系统数据选择
本篇介绍HFun.快速开发平台的另一项系统常用功能:系统数据或参数选择,主要应用在表单录入中信息的选择,如类别,编号等.先贴出本系统实现的页面效果: 如上图所示,系统中将参数的选择统一展现为该方式,开 ...
- selenium自动化测试多条数据选择第一条
如果我们测试时在一个页面中存在多条数据元素名称一致但是我们要选择第一条? 示意图: 方法一 driver.find_element_by_css_selector('.article-list/div ...
- iOS开发-数据选择UIPickerView
UIPickerView开发一般选择区域或者分级数据的时候会使用到,类似于前端中用到树状结构,不过PC上一般都是从上到下的分级,使用UIPickView是从左到右实现,可以动态的设置UIPickVie ...
- pandas之数据选择
pandas中有三种索引方法:.loc,.iloc和[],注意:.ix的用法在0.20.0中已经不建议使用了 import pandas as pd import numpy as np In [5] ...
- 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址 ...
随机推荐
- VS源码编译QuaZip(Windows下)
最近写个Qt demo,想要使用压缩和解压多个文件的功能,并不使用额外进程.网上参考了很多资料,发现只有QuaZip比较适合我的需求.但是QuaZip只提供源码,因此需要自己来编译. QuaZip简介 ...
- vue有关小知识
截取链接参数: //截取链接参数 this.id = this.$route.query.id;
- 前端MVC Vue2学习总结(六)——axios与跨域HTTP请求、Lodash工具库
一.axios Vue更新到2.0之后宣告不再对vue-resource更新,推荐使用axios,axios是一个用于客户端与服务器通信的组件,axios 是一个基于Promise 用于浏览器和 no ...
- Swift3中数组创建方法
转载自:http://blog.csdn.net/bwf_erg/article/details/70858865 数组是由一组类型相同的元素构成的有序数据集合.数组中的集合元素是有 序的,而且可以重 ...
- docker for windows & dotnet core app
Step 1: 安装docker for windows Step 2: 从github 上 clone 源代码:https://github.com/dotnet/dotnet-docker-sam ...
- Angular5系列教程:ng-book2-angular-5-r66 土家翻译,话糙理不糙
嗯, 在工作还辣么忙之时,看了这本书,感觉很不错.想分享给国内朋友们.结合自己的理解和整理加翻译,可能有点糙,但是,话糙理不糙嘛.出系列,不知道会不会弃坑,不立Flag了.持续更新.....我会放在印 ...
- opensuse安装pycurl失败记录
早上在opensuse安装pycurl,一直出现如下错误: pepper@VM_56_243_suse:~/code/gitosis-autotest> pip install pycurl C ...
- RESTful服务最佳实践
本文主要读者 引言 REST是什么 统一接口 基于资源 通过表征来操作资源 自描述的信息 超媒体即应用状态引擎(HATEOAS) 无状态 可缓存 C-S架构 分层系统 按需编码(可选) REST快速提 ...
- yum部署、使用 zabbix监控 - 详细过程
yum部署zabbix监控 第1章 yum部署zabbix服务端... 1 1.1 命令行部署... 1 1.1.1 yum源配置-解释... 2 1.1.2 MariaDB 与 mysql 3 1. ...
- asp.net core 2.0 查缺补漏
asp.net core 2.0 一些有用有趣的设置. 面向(targeting)不同的.net版本: 打开asp.net core 2.0的项目文件: xxx.csproj, 这部分: <Pr ...