《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-10(question?)
【例10-10】有苹果、橘子、香蕉、菠萝、梨这5种水果,已知每个果盘中一定有3种水果,并且3种水果的种类各不相同。编程计算可以制作出多少种水果拼盘。
【分析】
本题最容易最直观的解法就是使用穷举法。如果用3种变量x、y、z表示每一种果盘中的3种水果,用常量1~5分别表示拼过、橘子、香蕉、菠萝、梨这5种水果,将1~5分别复制给变量x、y、z,每一种赋值表示一种装盘方法,那么不难想象共有5exp3(5的3次方)种装盘方案。这5exp3种装盘方案构成了本题的解空间。但是5exp3种方案并不全是答案,因为题目要求每个果盘中3种水果的种类各不相同,因此需要添加约束条件x!=y!=z。这样就很容易得到解决本题的算法。
fruitPlate()
{
int x,y,z,count=0;
for(x=1;x<=5;x++)
for(y=1;y<=5;y++)
for(z=1;z<=5;z++)
{
if(x!=y && y!=z && x!=z)
输出一种拼盘方案,并计数
}
}
通过上述算法fruitPlate()可以得到符合要求的片盘方案。在这里使用一个三重循环,使得变量x、、y、z在1~5之间有规律地改变,从而得到5exp3种不同的组合形式。当x!=y,y!=z,x!=z时符合题目要求的答案。
下面给出完整的测试程序,程序清单10-10
#include "stdio.h"
char fruit[][10]={"apple","orange","banana","pineapple","pear"};
int fruitPlate()
{
int x,y,z,count=0;
for(x=1;x<=5;x++)
for(y=1;y<=5;y++)
for(z=1;z<=5;z++)
{
if(x!=y && y!=z && x!=z)
{
count++; /*计数*/
printf("%9s,%9s,%9s\n",fruit[x-1],fruit[y-1],fruit[z-1]); /*输出每一种结果*/
}
}
return count; /*返回拼盘的种类数*/
}
main()
{
printf("There are %d kinds of motheds for arranging plate.\n",fruitPlate()) ;
getche();
}
本程序的运行结果如图所示
《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-10(question?)相关推荐
- 移动端图形化报表界面设计_移动端几种常见的界面设计布局
在日常产品交互设计中,有时候总会对界面的排版和布局的选择上很纠结,界面的排版布局直接影响了用户体验,选择一个合适的排版是值得持续打磨的事情. 这里我画了几种移动端常见的页面布局和他们的各自特点: 1, ...
- 《统计学习方法》第10章 隐马尔科夫模型 HMM算法 纯Python代码实现 + 前后向算法矩阵形式 + 课后习题答案
理论知识:<统计学习方法>第10章 隐马尔科夫模型 一.HMM算法矩阵写法 前向算法 P(O∣λ)=πTBo1ABo2ABo3⋯ABoT(1,1,1)TP(O| \lambda) = \p ...
- 算法图解第二章笔记与习题(选择排序)
算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...
- 常见排序算法的时间复杂度、空间复杂度、稳定性比较
常见排序算法的时间空间复杂度.稳定性比较 一.排序算法比较 注: 1.归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高. 2. 基数排序时间复杂度为O(N*M),其中N为数据个数 ...
- 常见排序算法_解释的算法-它们是什么以及常见的排序算法
常见排序算法 In its most basic form, an algorithm is a set of detailed step-by-step instructions to comple ...
- 探花交友_第10章_搭建后台系统(新版)
探花交友_第10章_搭建后台系统(新版) 文章目录 探花交友_第10章_搭建后台系统(新版) 1.1 概述 1.2 API网关 1.2.1 搭建网关 依赖 引导类 跨域问题配置类 配置文件 测试 1. ...
- 第10章 基础API与常见算法
第10章 基础API与常见算法 学习目标 了解数学相关API 了解日期时间API 了解系统类API 掌握数组基础算法 掌握数组工具类的使用 熟练掌握String类的API 熟练掌握StringBuil ...
- 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt
<计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...
- 《MATLAB智能算法30个案例》:第10章 基于粒子群算法的多目标搜索算法
<MATLAB智能算法30个案例>:第10章 基于粒子群算法的多目标搜索算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...
最新文章
- supervisor源码分析
- python xlsxwriter合并单元格_Python使用xlsxwriter导出表格并合并单元格
- Codeforces 576D Flights for Regular Customers (图论、矩阵乘法、Bitset)
- C++实现successive approximation渐进法(附完整源码)
- 计算机文化基础性考二,电大计算机文化基础形考二答案
- spring boot中servlet启动原理
- java rmi配置_Java、Spring配置RMI连接
- 【bash】今天你坑队友了吗
- 剑指offerJZ1 二维数组中的查找 C++ python
- Docker与.Net项目类型
- 【rmzt】阳光美女win7主题
- 项目管理-项目范围说明书
- 移动硬盘格式化了的数据找回方法
- android studio导入音乐文件,Android Studio 通过raw 文件夹播放音乐问题
- 强化学习PARL——5. 基于连续动作空间上方法求解RL及大作业
- 深度学习在羚珑中的探索 -- 模板风格分类识别
- 加拿大留学计算机专业好移民吗,加拿大最适合留学转移民的热门专业——计算机科学及信息技术...
- 51单片机-RGB灯带
- 风雨十年:一个老程序员的心里话!
- 在java语言中 ()方法是不可以继承的_Java 语言中,构造方法是不可以继承的。( )_学小易找答案...