不同的编程语言,对于判断语句,循环语句等的写法是不一样的。但对于同一问题,我们只关心算法,于是就提出了伪代码,统一一下判断语句怎么写,循环语句怎么写,这样无论程序员学的是 C++,还是 JAVA,还是 python 就都可以用伪代码来表达了。

看下维基百科的定义。伪代码(英语:pseudocode),又称为虚拟代码,是高层次描述算法的一种方法。它不是一种现实存在的编程语言(已经出现了类似伪代码的语言,参见Nuva);它可能综合使用多种编程语言的语法、保留字,甚至会用到自然语言。

它以编程语言的书写形式指明算法的职能。相比于程序语言(例如Java、C++、C、Delphi 等等)它更类似自然语言。它是半形式化、不标准的语言。我们可以将整个算法运行过程的结构用接近自然语言的形式(这里可以使用任何一种作者熟悉的文字,例如中文、英文,重点是将程序的意思表达出来)描述出来。使用伪代码,可以帮助我们更好的表述算法,不用拘泥于具体的实现。

人们在用不同的编程语言实现同一个算法时意识到,他们做出来的实现(而非功能)很不同。程序员要理解一个用他并不熟悉的编程语言编写的程序,可能是很困难的,因为程序语言的形式限制了程序员对程序关键部分的理解。伪代码就这样应运而生了。

当考虑算法功能(而不是其语言实现)时,伪代码常常得到应用。计算机科学在教学中通常使用伪代码,以使得所有的程序员都能理解。

比如这里的百钱买百鸡问题。

for x ← 1 to 20 do

for y ← 1 to 33 do

z ← 100 - x - y

if 5 * x + 3 * y + z / 3 = 100 and z mod 3 = 0 then

output 公鸡 x 只,母鸡 y 只,小鸡 z 只

end if

end for

end forC ++ 实现

#includeusing namespace std;

int main() {

for (int x = 1; x < 20; x++) {

for (int y = 1; y < 33; y++) {

int z = 100 - x - y;

if (5 * x + 3 * y + z / 3 == 100 && z % 3 == 0) {

cout << "公鸡 " << x << " 只," << "母鸡 " << y << " 只," << "小鸡 " << z << " 只" << endl;

}

}

}

system("pause");

}JAVA 实现

package cc.windliang;

public class Test {

public void buy() {

for (int x = 1; x < 20; x++) {

for (int y = 1; y < 33; y++) {

int z = 100 - x - y;

if (5 * x + 3 * y + z / 3 == 100 && z % 3 == 0) {

System.out.println("公鸡 " + x + " 只," + "母鸡 " + y + " 只," + "小鸡 " + z + " 只");

}

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stubTest t = new Test();

t.buy();

}

}python3 实现

for x in range(1,20):

for y in range(1,30):

z = 100 - x - y

if 5 * x + 3 * y + z / 3 == 100 and z % 3 == 0:

print("公鸡 " + str(x) + " 只," + "母鸡 " + str(y) + " 只," + "小鸡 " + str(z) + " 只")

可以看到伪代码是给人看到,并不能让计算机去执行,而用具体语言实现的话,就可以让他们在各自的环境下运行。

为了答题,把我压箱底的 VS 编译器打开了,点个赞吧 ^ ^

python百钱买百鸡问题算法_百钱买百鸡问题的伪代码算法?相关推荐

  1. 协同过滤算法_机器学习 | 简介推荐场景中的协同过滤算法,以及SVD的使用

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第29篇文章,我们来聊聊SVD在上古时期的推荐场景当中的应用. 推荐的背后逻辑 有没有思考过一个问题,当我们在淘宝或者是 ...

  2. 深度学习算法和机器学习算法_啊哈! 4种流行的机器学习算法的片刻

    深度学习算法和机器学习算法 Most people are either in two camps: 大多数人都在两个营地中: I don't understand these machine lea ...

  3. mysql数据库算法_数据库:MySQL索引背后的数据结构及算法原理【转】

    原文:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话 ...

  4. qlearning算法_通过OpenAI Gym编写第一个强化学习算法

    腾讯互娱Turing Lab从创建开始,每周在内部进行分享读书会,对业界的技术研究和应用进行讨论.在此通过公众号形式把相关有趣内容也推送给对新技术和业界趋势感兴趣的朋友. 和大量的所谓技术公众号不同, ...

  5. 6种java垃圾回收算法_被说烂了的Java垃圾回收算法,我带来了最“清新脱俗”的详细图解...

    一.概况 理解Java虚拟机垃圾回收机制的底层原理,是系统调优与线上问题排查的基础,也是一个高级Java程序员的基本功,本文就针对Java垃圾回收这一主题做一些整理与记录.Java垃圾回收器的种类繁多 ...

  6. 关联规则挖掘算法_关联规则的挖掘与应用——Apriori和CBA算法

    文|光大科技大数据部  魏乐 卢格润 1  关联规则 1.1 关联规则基本概念 1.2 Apriori算法基本思路 2  关联分类 2.1  CBA关联分类算法思路 2.2  CBA算法实现 总结 关 ...

  7. 学大数据要学哪些算法_大数据学习之不得不知的八大算法

    算法一:快速排序法 快速排序是由东尼 · 霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n) 次比较.在最坏状况下则需要Ο(n2) 次比较,但这种状况并不常见. 事实上,快 ...

  8. python计算平方根算法_每日一程-16.python-巴比伦平方根算法

    Author: Notus(hehe_xiao@qq.com) Create: 2019-02-23 Update: 2019-02-23 巴比伦平方根算法 环境 Python version: 3. ...

  9. python求鸡兔同笼 鸡兔总数鸡兔腿_编写一个程序解鸡兔同笼问题:已知鸡兔总数为a,鸡兔腿总数为b,计算鸡兔各有多少只?...

    [单选题]42. Wie alt ist deine Schwester? Ist sie noch klein? - Ja, sie ist acht.(1998) [单选题]46. Er beha ...

  10. 数学速算法_适合小学三、四年级的心算法,再“笨”的学生,也不用列竖式

    更多心算速算法,在我的公众号,小学数学心算速算,可以看到哦! 不少家长在后台咨询,有没有适合小学三.四年级的心算法? 今天,就分享一种适合三.四年级学生的心算法.这种心算法,适合计算加减法时用,而且, ...

最新文章

  1. Java 多线程的基本方式
  2. srs audio sandbox 注册机_Windows10自带 Sandbox软件测试必备技巧
  3. Nginx 静态文件 location 指定
  4. 广域网设备:远程路由器/交换机/服务器—Vecloud
  5. “小会话,大学问” - 如何让聊天机器人读懂对话历史?| 论文访谈间 #03
  6. Unity编译Mono
  7. ajax 同步怎么回调,Ajax jquery同步回调成功
  8. Java程序设计语言基础03:Java中的程序执行流程
  9. 《C#高效编程》读书笔记04-使用Conditional特性而不是#if条件编译
  10. vue 实现图片预览
  11. [OpenCV+VS2015]火焰检测算法(RGB判据)
  12. 全国哀悼日,网站变成黑白色
  13. python header是啥_Python爬虫之Header
  14. 初学者学习JAVASCRIPT很吃力怎么办?到底该如何学习JS?
  15. Eclipse相关技术总结
  16. Google Play APK 下载
  17. 如何使用火焰图对Spark的executor的CPU使用率进行profile?具体步骤,如何操作?
  18. [转]关于使用多表做update的语法
  19. 人脸检测实战进阶:使用 OpenCV 进行活体检测
  20. 寻路 pathfinder 狂乱画

热门文章

  1. 面试前必看:Redis 和 Memcached 的区别
  2. aes算法的地位_aes算法最后一轮为什么没有列混淆?
  3. 路由器计算机无法上网,路由器安装后电脑无法上网怎么办
  4. oracle管理mysql_oracle表管理
  5. linux系统调用理解之摘录(1)
  6. 终极对决!Dubbo 和 Spring Cloud 微服务架构到底孰优孰劣?
  7. MTP 多媒体传输协议
  8. 为什么 RestTemplate 那么棒,看这篇就够了!
  9. 消息队列面试连环炮,你抗得住吗?
  10. 没有文档,没有老员工讲解,悲催的新人如何快速熟悉一个新项目?