《matlab智能算法30个案例分析》(作者史峰、王辉、郁磊、胡斐)是作者多年从事算法研究的经验总结。书中所有案例均因国内各大matlab技术论坛网友的切身需求而精心设计,其中不少案例所涉及的内容和求解方法在国内现已出版的matlab书籍中鲜有介绍。
注释写在了后面,主要思想是设置了两个数组。left[3]表示没过河的集合,right[3]表示已经过河的集合。0,1,2分别表示菜,羊,狼,-2表示空(比如白菜过河了那么left[0]就等于-2)。输出结果中用x to left 和x to right表示元素的运动方向。
程序如下:
#include <stdioh>
#include <mathh>
int kong(int left[])
//判断是否全都过河了,0表示没全过河,1表示全过河了
{
int i;
for(i=0;i<3;i++)
{
if(left[i]!=-2)
return 0;
}
return 1;
}
void ltor(int left[],int right[])
//到对岸时选一个元素
{
int i;
for(i=0;i<3;i++)
if(left[i]!=-2)
{
if(abs(left[(i+1)%3]-left[(i+2)%3])!=1)
//此句中如果两数相减有绝对值为一的元素情况说明有吃与被吃的关系存在,即不能运该元素
{
right[i]=left[i];
left[i]=-2;
printf("%d to right\n",i);
}
}
}
void rtol(int left[],int right[])
//从对岸回去时选一个元素
{
int i;
for(i=0;i<3;i++)
if(abs(right[(i+1)%3]-right[(i+2)%3])==1)
//如果有两数之差有绝对值为一的情况,说明人必须带回一个元素回去,不然有吃东西会被吃掉
{
left[(i+1)%3]=right[(i+1)%3];
right[(i+1)%3]=-2;
printf("%d to left\n",i+1);
}
}
void main()
{
int left[3]={0,1,2},right[4]={-2,-2,-2};
while(!kong(left))
{
ltor(left,right);
if(!kong(left))
rtol(left,right);
}
}
#include "stdioh"
#define N 10
main()
{
int a[N];
int i,j,p,temp;
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{
p=i;
for(j=i+1;jif(a[j]temp=a[i];a[i]=a[p];a[p]=temp;
}
printf(" ");
for(i=0;iprintf("%d ",a[i]);
}
例如:
Read x
If x<0 Then
y←bai2×dux+3
Else
If x>zhi0 Then
y←2×x-5
Else
y←0
End If
End If
Print y
End
Read x
If x<0 Then
y←2×x+3
Else
If x>0 Then
y←2×x-5
Else
y←0
End If
End If
Print y
End
扩展资料:
一张流程图能够成为解释某个零件的制造工序,甚至组织决策制定程序的方式之一。这些过程的各个阶段均用图形块表示,不同图形块之间以箭头相连,代表它们在系统内的流动方向。下一步何去何从,要取决于上一步的结果,典型做法是用“是”或“否”的逻辑分支加以判断。
流程图使用一些标准符号代表某些类型的动作,如决策用菱形框表示,具体活动用方框表示。但比这些符号规定更重要的,是必须清楚地描述工作过程的顺序。流程图也可用于设计改进工作过程,具体做法是先画出事情应该怎么做,再将其与实际情况进行比较。
参考资料来源:百度百科-流程图
以上就是关于智能算法30个案例分析这本书关于遗传算法的程序解释全部的内容,包括:智能算法30个案例分析这本书关于遗传算法的程序解释、C++求算法,写个程序。高手请进!简单点最好!好的追加10分!、结合生活中的实例,描述求解随机数的算法流程图。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)