用三重循环穷举算法为例讲解算法流程图

流程图简单介绍

流程图可以理解为算法的图形化,让人们直接的了解算法执行的过程。

流程图是用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。 

作图软件可以选用EdrawMax(本篇使用)

流程图中不同图框代表的含义

 圆弧形框:表示开始或结束

 矩形框:表示运算步骤

 菱形框:表示判断

 平行四边形框:表示输入和输出

C语言代码

  百人搬百砖问题:100块砖100人搬,男搬4,女搬3,3小孩抬一,问男,女,小孩各若干 

#include<stdio.h>
int main()
{
	int i,j,k;
	for(i=0;i<=25;i++)
	{
		for(j=0;j<34;j++)
		{
			for(k=0;k<100;k++)
			{
				if(4*i+3*j+k/3==100&&i+j+k==100)
				{
					printf("男人:%-2d 女人:%-2d 小孩:%d\n",i,j,k);
					
				}
			}
		}
	}
	return 0;
 } 

算法流程图 要求

画算法流程图与翻译文言文类似要求做到“信、达、雅”

信:要求逻辑准确,不偏离源代码,不能产生歧义。

达:不必拘泥源代码顺序,为了通顺可以对步骤顺序进行改变,逻辑正确即可。

雅:流程图需让人一目了然。如果说文言翻译追求古朴典雅美,那流程图就是追求简洁清晰美。

 作图方法

1、代码对应的图框在纸上按顺序表示出来

2、在图框中填入代码\伪代码\自然语言

     变量赋值步骤和一般运算步骤填入矩形框

     条件表达式填入菱形框

3、将图框按照逻辑连接起来

      如布尔逻辑

4、提示:逻辑表达式只需判断true or false 

作图可能遇到的问题

1、双箭头产生的歧义

 如图中i<=25到k<=100之间出现了两次双箭头一定会产生歧义。

本意是:条件表达式i<=25,true则进行下一个条件表达式,false则i++。

解决方法很简单,换用图框上不同的点。

2、箭头折角太多,画面杂乱

如图,虽解决了1当中的问题,但一个箭头折角过多。自己画流程图不像物理电学考试中,给定电池及用电器的位置,让学生来连线。此图大概就是如学生连的电路图。(开个玩笑)

 解决方法:将所有图框尽量排成一竖列,并且做到菱形框箭头向下为true,箭头向右为false

最终的流程图

结语 

本篇文章中的思路和方法均为本人原创,欢迎大家提出问题,也希望对大家有所帮助。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值