【例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. 移动端图形化报表界面设计_移动端几种常见的界面设计布局

    在日常产品交互设计中,有时候总会对界面的排版和布局的选择上很纠结,界面的排版布局直接影响了用户体验,选择一个合适的排版是值得持续打磨的事情. 这里我画了几种移动端常见的页面布局和他们的各自特点: 1, ...

  2. 《统计学习方法》第10章 隐马尔科夫模型 HMM算法 纯Python代码实现 + 前后向算法矩阵形式 + 课后习题答案

    理论知识:<统计学习方法>第10章 隐马尔科夫模型 一.HMM算法矩阵写法 前向算法 P(O∣λ)=πTBo1ABo2ABo3⋯ABoT(1,1,1)TP(O| \lambda) = \p ...

  3. 算法图解第二章笔记与习题(选择排序)

    算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...

  4. 常见排序算法的时间复杂度、空间复杂度、稳定性比较

    常见排序算法的时间空间复杂度.稳定性比较 一.排序算法比较 注: 1.归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高. 2. 基数排序时间复杂度为O(N*M),其中N为数据个数 ...

  5. 常见排序算法_解释的算法-它们是什么以及常见的排序算法

    常见排序算法 In its most basic form, an algorithm is a set of detailed step-by-step instructions to comple ...

  6. 探花交友_第10章_搭建后台系统(新版)

    探花交友_第10章_搭建后台系统(新版) 文章目录 探花交友_第10章_搭建后台系统(新版) 1.1 概述 1.2 API网关 1.2.1 搭建网关 依赖 引导类 跨域问题配置类 配置文件 测试 1. ...

  7. 第10章 基础API与常见算法

    第10章 基础API与常见算法 学习目标 了解数学相关API 了解日期时间API 了解系统类API 掌握数组基础算法 掌握数组工具类的使用 熟练掌握String类的API 熟练掌握StringBuil ...

  8. 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt

    <计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...

  9. 《MATLAB智能算法30个案例》:第10章 基于粒子群算法的多目标搜索算法

    <MATLAB智能算法30个案例>:第10章 基于粒子群算法的多目标搜索算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...

最新文章

  1. supervisor源码分析
  2. python xlsxwriter合并单元格_Python使用xlsxwriter导出表格并合并单元格
  3. Codeforces 576D Flights for Regular Customers (图论、矩阵乘法、Bitset)
  4. C++实现successive approximation渐进法(附完整源码)
  5. 计算机文化基础性考二,电大计算机文化基础形考二答案
  6. spring boot中servlet启动原理
  7. java rmi配置_Java、Spring配置RMI连接
  8. 【bash】今天你坑队友了吗
  9. 剑指offerJZ1 二维数组中的查找 C++ python
  10. Docker与.Net项目类型
  11. 【rmzt】阳光美女win7主题
  12. 项目管理-项目范围说明书
  13. 移动硬盘格式化了的数据找回方法
  14. android studio导入音乐文件,Android Studio 通过raw 文件夹播放音乐问题
  15. 强化学习PARL——5. 基于连续动作空间上方法求解RL及大作业
  16. 深度学习在羚珑中的探索 -- 模板风格分类识别
  17. 加拿大留学计算机专业好移民吗,加拿大最适合留学转移民的热门专业——计算机科学及信息技术...
  18. 51单片机-RGB灯带
  19. 风雨十年:一个老程序员的心里话!
  20. 在java语言中 ()方法是不可以继承的_Java 语言中,构造方法是不可以继承的。( )_学小易找答案...

热门文章

  1. android 百度 离线地图 定位吗,Android 离线打包,百度地图定位出错,求救!!
  2. linux securecrt快捷键设置,SecureCRT常用快捷键设置
  3. 2017 蓝桥杯初赛 分巧克力
  4. 2015民大开学典礼|蒙圣光:从现在看未来,在未来看现在
  5. 软件测试 自动化测试 Web自动化测试01 selenium 定位元素方法 元素操作 自动化脚本开发
  6. 一副图片带来的声望和恶意
  7. 天气API Http接口
  8. 与gitlab远程仓库建立链接
  9. jstack定位死循环
  10. Samsung S8+ 欧版 Google Play服务耗电快解决方案尝试