流程图简单介绍

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

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

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

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

java 穷举算法 工具包引用 穷举法程序框图_java 穷举算法 工具包引用

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

java 穷举算法 工具包引用 穷举法程序框图_c语言_02

 矩形框:表示运算步骤

java 穷举算法 工具包引用 穷举法程序框图_算法_03

 菱形框:表示判断

java 穷举算法 工具包引用 穷举法程序框图_c语言_04

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

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、双箭头产生的歧义

java 穷举算法 工具包引用 穷举法程序框图_流程图_05

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

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

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

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

java 穷举算法 工具包引用 穷举法程序框图_c语言_06

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

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

最终的流程图

java 穷举算法 工具包引用 穷举法程序框图_c语言_07

结语 

欢迎大家提出问题,也希望对大家有所帮助。