阿里2018笔试题 之 三种颜色排列
题目:
晚会上(具体是不是晚会不太记得了...)所有人要站成一排。有三种颜色的衣服,要求相邻的人穿不同颜色的衣服。输入每种颜色衣服的数量,问总共有多少种排列方式。
例:
输入:1 1 1
输出:6
题目分析:
可以采用递归的做法。假设已经排好了n个人,则第n+1个人的衣服可从另外两种颜色中选。
递归终止的条件是:所有的衣服已经用完或者没有可以选的衣服。
代码:
#include <iostream>
#include <vector>
using namespace std;int arrange(vector<int>& cloth, int last, int len);
int total; // 衣服总数void main()
{ vector<int> cloth(3); // 三种颜色的衣服数量for (int i = 0; i < 3; i++){cin >> cloth[i];total += cloth[i];}int cnt = arrange(cloth, -1, 0);cout << cnt << endl;cin.get();
}//
// cloth: 三种颜色剩余衣服数量
// last: 前一个颜色
// len: 当前已经排列了几个
//
int arrange(vector<int>& cloth, int last, int len)
{if (len == total) // 全部排列完return 1; int cnt = 0;for (int i = 0; i < 3; i++) // 检查每种颜色{if (i != last && cloth[i] > 0) // 与前一个不同颜色,且有剩余衣服{cloth[i]--;cnt += arrange(cloth, i, len + 1); // 排列下一个cloth[i]++;}}return cnt;
}
阿里2018笔试题 之 三种颜色排列相关推荐
- 软件测试笔试题(三)
软件测试用例-------电梯,杯子,笔,桌子,洗衣机 拿到题目,先分析 在设计测试用例时一般从以下几个方面进行分析:功能测试,性能测试,界面测试,安全性测试,兼容性测试,可用性测试,可靠性测试 软件 ...
- ios 三种颜色画笔和橡皮擦的画图板demo
demo功能:三种颜色画笔和橡皮擦的画图板demo [iphone 6.1 测试通过] demo说明:项目中PaintView.m 是demo的画板部分,PaintView和三个颜色按钮添加到View ...
- 灰、黄、蓝三种颜色的收集装置模型练习及实现思路
下图模型中,灰.黄.蓝三种颜色的收集装置各1个.灰.黄.蓝三种颜色的方形环各3个.方形环随机摆放在收集装置上.要求将方形环进行移动,通过最少次移动,使方形环颜色与收集装置颜色一致.每次可移动一个方形环 ...
- 2023-02-11:给你两个整数 m 和 n 。构造一个 m x n 的网格,其中每个单元格最开始是白色, 请你用 红、绿、蓝 三种颜色为每个单元格涂色。所有单元格都需要被涂色, 涂色方案需要满足:
2023-02-11:给你两个整数 m 和 n .构造一个 m x n 的网格,其中每个单元格最开始是白色, 请你用 红.绿.蓝 三种颜色为每个单元格涂色.所有单元格都需要被涂色, 涂色方案需要满足: ...
- 【Python】有红、黄、绿三种颜色的球,编程计算摸出球的各种颜色搭配
Python三色球问题 题目 代码 结果 题目 有红.黄.绿三种颜色的球,其中红球 3 个, 黄球 3 个,绿 球 6 个.先将这 12 个球混合放在一个盒子中,从中任意摸 出 8 个球,编程计算摸出 ...
- 【C语言基础练习】有红、绿、蓝三种颜色的球各3个。现在将着9个球混合放在一个盒子中,从中任意摸出6个,编程计算摸出球的各种颜色搭配。
有红.绿.蓝三种颜色的球各3个.现在将着9个球混合放在一个盒子中,从中任意摸出6个,编程计算摸出球的各种颜色搭配. 1 #include<stdio.h>2 int main()3 {4 ...
- 设计一个灯光控制逻辑电路. 要求红、绿、黄三种颜色的灯在时钟信号的作用下按表P6.30规定的顺序转换状态
题目: 设计一个灯光控制逻辑电路. 要求红.绿.黄三种颜色的灯在时钟信号的作用下按表P6.30规定的顺序转换状态. 表中的1表示"亮", 0表示"灭". 要求电 ...
- 小米Max正式发布 三种颜色三种配置
小米一直在预热的小米Max今天正式发布,正如其名字一样,其主要特点就是大--采用了6.44英寸1080p的屏幕.小米Max采用了2.5D弧面玻璃加金属机身的设计,背部设有指纹识别功能,配置方面则是高通 ...
- 有红、黄、绿三种颜色的球,其中红球 3 个, 黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。1. 输出情况总数;2.输出摸取情
内容1:有红.黄.绿三种颜色的球,其中红球 3 个, 黄球 3 个,绿球 6 个.先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配.1. 输出情况总数;2.输 ...
- matlab一个图三种颜色,MATLAB:生成给定三种颜色的色彩图
我正在尝试在MATLAB中生成一个颜色图,给出三种颜色,一种是高极限,零极低.我的思维过程是从高端到中间循环并将每一步存储到3xN(第一列是R,第二列是G,第三列是B)矩阵.所以我正在使用: %fad ...
最新文章
- 单片机机器周期怎么计算公式_什么是晶振,对于单片机来说它有什么重要作用?...
- c++ 图的连通分量是什么_图与图论基本概念(图论算法入门)
- ES6的新特性----Vue学习必备基础知识
- idea:打包jar(原文by曲高终和寡)
- WPF MVVM实例三
- 前端学习(338):堆栈
- 粒子群优化算法(Particle Swarm Optimization)的 Matlab(R2018b)代码实现
- 如何看待开源软件的知识产权问题——陆首群
- pymysql之常见数据库操作
- 和平精英有电脑版吗_和平精英电脑版灵敏度调多少 CP端灵敏度设置攻略
- ubuntu16.04 gnome环境,怎么样下载使用monaco字体
- popupwindow拦截点击物理返回键
- Entry name ‘res/layout/test_toolbar.xml‘ collided
- linux 1.0 如何运行,观点|Linux 1.0 之旅:回顾这一切的开始
- 华为matex搭载鸿蒙系统,华为 MateX 推迟至 9 月上市,或预装鸿蒙系统
- 四川泸州市高职计算机学校,四川泸州职高学校有哪些?
- 可以实现内网穿透的几款工具
- 4.网络设备基础配置实验
- Stack Overflow 宣布推出离线版本
- 图论欧拉回路初步 BZOJ2095 POI2010 Bridges