有K种颜色的小球(K<=10),每种小球有若干个,总数小于100个。
现在有一个小盒子,能放N个小球(N<=8),现在要从这些小球里挑出N个小球,放满盒子。
想知道有哪些挑选方式。注:每种颜色的小球之间没有差别。

请按数字递增顺序输出挑选小球的所有方式。

如有3种颜色,每种颜色小球的个数分别为a:1,b:2,c:3,挑出3个小球的挑法有:
003,012,021,102,111,120

#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<vector>
#include<stack>
#include<numeric>
using namespace std;
struct node
{
int num;
vector< vector<int> > v;//两个容器嵌套,记录取球方案
};
int main()
{
int n, k;
cin >> k >> n;
vector<node> ball(k);
for (int i = ; i < k; i++)
{
int t;
cin >> t;
ball[i].num = t;
}
if (k == )//只有一种方案
cout << n << endl;
else
{
vector<int>temp;
for (int i = ; i <= ball[].num; i++)//初始化,第一种球的取法
{
temp.push_back(i);
ball[].v.push_back(temp);
temp.clear();
}
for (int i = ; i < k; i++)//取那种球
{
for (int j = ; j < ball[i - ].v.size(); j++)//取第i种球之前有几种方案
{
for (int x = ; x <= ball[i].num; x++)//第i种球可以取多少个
{
temp = ball[i - ].v[j];//取第i-1种球的第j种方案
temp.push_back(x);//第i种球取x个
if (i == k - )//取完K种球并且球的总数为N(k-1是因为第一种球初始化处理了)
{
if (accumulate(temp.begin(), temp.end(),) == n)//输出方案
{
for (int y = ; y < temp.size(); y++)
cout << temp[y];
cout << endl;
}
}
else
if (accumulate(temp.begin(), temp.end(),) <= n)
ball[i].v.push_back(temp);//取完第i种球之后的取球方案
temp.clear();
}
}
}
}
return ;
}

k种球若干,取n个球,输出所有取球方案 (模拟)的更多相关文章

  1. 试题系列四(袋中有6红球 3黄球 3绿球,从中取6个球,求所有拿到球的颜色的可能 c(12,6))

    1.袋中有6红球 3黄球 3绿球,从中取6个球,求所有拿到球的颜色的可能 c(12,6) #include<stdio.h> int main(int argc, char** argv) ...

  2. 写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。

    问题: 写一个带文本菜单的程序,菜单项如下(1)    取五个数的和 (2)     取五个数的平均值(X)    退出. 由用户做一个选择, 然后执行相应的功能.当用户选择退出时程序结束. 实现: ...

  3. python requests库爬取网页小实例:爬取网页图片

    爬取网页图片: #网络图片爬取 import requests import os root="C://Users//Lenovo//Desktop//" #以原文件名作为保存的文 ...

  4. ORACLE中关于使用between在MyBatis中取不同的区间值和取反

    最近在项目中使用between取不同的区间值问题,由于区间跨度大,而且区间多,又是前端传过来的参数,所以使用in和exists比较麻烦.然后就考虑使用between.现将使用方法记录一下. 假如表有个 ...

  5. 【转】取模(mod)与取余(rem)的区别——Matlab学习笔记

    昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem)是不同的,今天在网上具体查了一下: 通常取模运算也叫取余运算,它们返回结果都是余数.rem和mod唯一的区别在于:    当 ...

  6. httprequest存储的是字符内容 而文本内容是以字节形式上传的;所以普通的取值方式无法从httprequest取到值

    httprequest存储的是字符内容 而文本内容是以字节形式上传的;所以普通的取值方式无法从httprequest取到值

  7. js 小数取整,js 小数向上取整,js小数向下取整

    js 小数取整,js 小数向上取整,js小数向下取整 >>>>>>>>>>>>>>>>>>& ...

  8. 陕西师范大学第七届程序设计竞赛网络同步赛D ZQ的睡前故事【约瑟夫环1-N数到第k个出队,输出出队顺序/ STL模拟】

    链接:https://www.nowcoder.com/acm/contest/121/D来源:牛客网 题目描述 ZQ是一个拥有n女朋友的万人迷,她的每一个女朋友每天晚上都会挨个给他打电话,要他讲了睡 ...

  9. (3)分布式下的爬虫Scrapy应该如何做-递归爬取方式,数据输出方式以及数据库链接

    放假这段时间好好的思考了一下关于Scrapy的一些常用操作,主要解决了三个问题: 1.如何连续爬取 2.数据输出方式 3.数据库链接 一,如何连续爬取: 思考:要达到连续爬取,逻辑上无非从以下的方向着 ...

随机推荐

  1. Linux - seq

    1. 概述 生成序列的命令 之前貌似写过 seq 命令, 这次单独拉出来再写一次吧 节操先放一放 2. 命令 1. 帮助 命令 # 输出我就不打了, # 这个命令可用, 证明组件可用 > seq ...

  2. C:字符数组 与 字符串

    字符串与字符数组 C语言中没有字符串这种数据类型,可以通过char的数组来替代: 字符串一定是一个char的数组,但char的数组未必是字符串: 数字0(和字符'\0'等价)结尾的char数组就是一个 ...

  3. 20180923-WebService

    什么是webservice?    什么是远程调用技术?答:系统和系统之间的调用,从远程系统当中获取业务数据.    Webservice是web服务,他是用http传输SOAP协议数据的一种远程调用 ...

  4. 聊聊、Spring自动扫描

    一.PathMatchingResourcePatternResolver 二.SimpleMetadataReaderFactory 三.实现(核心代码) private static final ...

  5. Android学习04

    Toast Toast是Android系统提供的一种非常好的提示方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何的屏幕空间. 1.默认Toast 在 ...

  6. 【MySQL】单表查询

    " 目录 where 约束 group by 分组查询 聚合函数 having 过滤 order by 查询排序 limit 限制查询的记录数 # 语法 select 字段1, 字段2 .. ...

  7. vue动态加载jQuery插件

    要先npm安装jQuery插件哦 window.$=$; window.jQuery=$; function loadJs(Url,callback){ var Nscript=document.cr ...

  8. Django模型model Field详解:

    类型说明 AutoField一个自动增加的整数类型字段.通常你不需要自己编写它,Django会自动帮你添加字段:id = models.AutoField(primary_key=True),这是一个 ...

  9. Python中的浅复制、深复制

    参考 https://docs.python.org/3/library/copy.html?highlight=copy%20copy#copy.copy https://en.wikipedia. ...

  10. 吴裕雄 python 神经网络——TensorFlow 变量管理

    import tensorflow as tf with tf.variable_scope("foo"): v = tf.get_variable("v", ...