发放激活码 (一问一答)

9 篇文章 0 订阅

1、题目描述


题目描述 (来源于一问一答题目地址


完美世界最新的客户端游戏大作笑傲江湖最近已经开始测试了,由于希望参与的玩家太多,只能使用激活码的方式让一部分玩家可以参与测试,现在需要一个测试码的生成规则。
如从一组不重复的数字中获得随机几个数字组成验证码,其中只要是这些数字相加的和为相同的那么就认为是同一组验证码,最后希望获得一共有多少组有效验证码。 现在希望获得从一组N不同的数字中,获得和为C 的组个的个数。组合的个数有可能是1个 有可能是N个 。

输入格式

第一行输入1个整数M,表示总得数据组数。
第二行输入1个整数 2 < N < 100,表示需要输入的不同的数字的个数
第三行输入1个整数 C ,表示数字的和
第四行输入N个不同数字(数字>0)中间用逗号隔开,   0 < 单个数字 <= 100

测试格式

输入样例:

4
4
3
11 ,2, 3, 1
3
3
1,2,3
6
6
1, 6, 3, 2, 5, 4
10
10
1, 2, 3 ,4, 5, 6, 7 ,8 ,9 ,10
输出样例

2
2
4
10


2、算法及思想


将源数据按向量存储,在向量中选择部分数据使其和为C,用堆栈结构存储选择的数据,一直迭代,当栈为空的时候结束。流程如下:

    1. input N,C;
    2. vector<int> v(N), stack<int> s;         // 输入数据,并初始化
    3. s.push(v[0]), count=0                        // 将向量第一的数据压入栈底
    4. while  ! s.empty()
    5.      if s.top() < N-1
    6.              if   sum(s)  < C
    7.                        s.push(s.top()+1)         // 向堆栈加入下一个元素
    8.            else
    9.                       if  sum(s) == C             //存在一组,计数加一
    10.                              count ++
    11.                      s.top()++                      //栈顶加一
    12.      else
    13.             if   sum(s) == C              
    14.                        count++
    15.             s.pop()
    16.             s.top()++                // 弹栈后栈顶元素加一
    17.  print  count                     // 输出count.


3、C++代码实现



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 修订历史记录10 关于本指南11 文档约定11 其他文件与帮助12 关于技术支持13 架构和功能14 站点14 分布式扫描引擎15 无代理操作15 资产组16 安全控制台17 扫描17 设备( 资产) 发现17 报告19 管理和诊断功能19 使用API 20 使用两种API 版本20 发送API 请求21 API 要求23 API 应用23 1.1 版本API 部分的结构24 构成1.1 版本API 的单个API 列表25 会话管理28 目录3 Login 28 Logout 29 站点管理30 SiteListing 30 SiteConfig 30 SiteConfigResponse 示例32 SiteSave 32 SiteSaveResponse 示例35 SiteDelete 35 SiteDeviceListing 36 SiteScanHistory 37 扫描管理41 SiteScan 41 SiteDevicesScan 42 ScanActivity 45 ScanActivityResponse 示例47 ScanPause 47 ScanResume 48 ScanStop 49 ScanStatus 49 ScanStatistics 50 EngineListing 53 EngineActivity 54 一般管理和诊断功能57 ConsoleCommand 57 SystemInformation 57 目录4 StartUpdate 59 Restart 60 SendLog 61 设备( 资产) 管理62 DeviceDelete 62 资产组管理63 AssetGroupListing 63 AssetGroupConfig 63 AssetGroupSave 64 AssetGroupDelete 66 漏洞管理68 VulnerabilityListing 68 VulnerabilityDetails 69 报告71 ReportTemplateListing 71 ReportTemplateConfig 71 ReportTemplateSave 72 ReportListing 73 ReportHistory 73 ReportConfig 74 ReportSave 75 ReportGenerate 75 ReportDelete 76 ReportAdhocGenerate 76 用户管理功能79 UserListing 79 目录5 UserAuthenticatorListing 80 UserConfig 81 UserSave 82 UserDelete 83 一般管理和诊断功能85 ConsoleCommand 85 SystemInformation 85 StartUpdate 87 Restart 88 SendLog 89 DTD 列表90 Device DTD 90 SiteSummary DTD 90 Site DTD 90 AssetGroupSummary DTD 94 AssetGroup DTD 95 EngineSummary DTD 96 ScanConfig DTD 97 ScanSummary DTD 100 ReportTemplateSummary DTD 101 ReportTemplate DTD 102 ReportConfigSummary DTD 103 ReportConfig DTD 104 Email DTD 107 ReportSummary DTD 108 UserConfig DTD 109 目录6 User Site DTD 110 User Group DTD 110 UserSummary DTD 110 AuthenticatorSummary DTD 111 XMLResponse DTD 111 Failure DTD 112 使用扩展1.2 版本API 部分113 使用导航标题113 以模式进行验证113 构成1.2 版本扩展API 的单个API 列表114 会话管理118 Login 118 Logout 118 资产发现连接管理120 DiscoveryConnectionCreate 120 DiscoveryConnectionUpdate 122 DiscoveryConnectionListing 123 DiscoveryConnectionDelete 125 DiscoveryConnectionConnect 125 扫描引擎管理127 EngineActivity 127 EngineConfig 132 EngineDelete 134 EngineListin

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值