1. 急求算法说明
就是循环n次,每次循环里面,先横向移动,也就是y不变,x下标每次加1,然后里面写进去的数字就是b,这个b每次都加1. 横向写完一排,也就是第一个for (m=。
那个循环执行完一次,然后就纵向移动,纵向移动的时候,就是x每次加1,y不变。这样循环执行完之后,就画完了一个“L”旋转180度那种形状了。
然后那个最外层的for (i=。
那个循环,i就加1. 这样,第二次执行那两个内层循环,这次就是计算L型了,而且这个L型的每条边的长度是4,也就是n-i=5-1=4. 也就是先横着写四个数字,然后向上纵向写4个数字。
每次写数字,和前面不同的就是,下标每次循环都是减1,因为这次是从右往左,从下往上计算的。
以此类推,计算完每条边长度为4的L型,就计算每条边长为3的旋转后的L型,然后每条边长度为2的L型,然后每条边长度为1,其实就是一个数字了,然后就循环结束。
2. 什么叫算法描述啊
算法描述(Algorithm Description )是指对设计出的算法,用一种方式进行详细的描述,以便与人交流。算法可采用多种描述语言来描述,各种描述语言在对问题的描述能力方面存在一定的差异,可以使用自然语言、伪代码,也可使用程序流程图,但描述的结果必须满足算法的五个特征。
算法可采用多种描述语言来描述,例如,自然语言、计算机语言或某些伪语言。各种描述语言在对问题的描述能力方面存在一定的差异。例如,自然语言较为灵活,但不够严谨。而计算机语言虽然严谨,但由于语法方面的限制,使得灵活性不足。
因此,许多教材中采用的是以一种计算机语言为基础,适当添加某些功能或放宽某些限制而得到的一种类语言。这些类语言既具有计算机语言的严谨性,又具有灵活性,同时也容易上机实现,因而被广泛接受。目前,许多“数据结构”教材采用类PASCAL语言、类C++或类C语言作为算法描述语言。
扩展资料:
算法的特征
1、输入:一个算法必须有零个或以上输入量。
2、输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。
3、明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地符合要求或期望,通常要求实际运行结果是确定的。
4、有限性:依据图灵的定义,一个算法是能够被任何图灵完备系统模拟的一串运算,而图灵机器只有有限个状态、有限个输入符号和有限个转移函数(指令)。而一些定义更规定算法必须在有限个步骤内完成任务。
5、有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
参考资料来源:百度百科-算法描述
3. 算法的过程怎么写啊
算法的流程书写可通过流程图或伪代码来完成。
所谓流程图是指以特定的图形符号加上说明,表示算法的图,用它来表示算法思路是一种极好的方法,因为有时候千言万语不如一张图形象生动易于理解,例如:
而伪代码是介于自然语言和计算机语言之间的文字和符号(包括数学符号),它是一种不依赖于语言、用来表示程序执行过程、而不一定能编译运行的代码,例如:
Begin(算法开始)
输入 A,B,C
IF A>B 则 A→Max
否则 B→Max
IF C>Max 则 C→Max
Print Max
End (算法结束)
4. 简便计算方法写
简便运算的方法:
(一)运用加法的交换律、结合律进行计算。要求学生善于观察题目,同时要有凑整意识。
如:5.7+3.1+0.9+1.3,等。
(二)运用乘法的交换律、结合律进行简算。
如:2.5*0.125*8*4等,如果遇到除法同样适用,或将除法变为乘法来计算。如:8.3*67÷8.3÷6.7等。
(三)运用乘法分配律进行简算,遇到除以一个数,先化为乘以一个数的倒数,再分配。
如:2.5*(100+0.4),还应注意,有些题目是运用分配律的逆运算来简算:即提取公因数。如:0.93*67+33*0.93。
(四)运用减法的性质进行简算。减法的性质用字母公式表示:A-B-C=A-(B+C),同时注意逆进行。
如:7691-(691+250)。
(五)运用除法的性质进行简算。除法的性质用字母公式表示如下:A÷B÷C=A÷(B*C),同时注意逆进行,
如:736÷25÷4。
(六)接近整百的数的运算。这种题型需要拆数、转化等技巧配合。
如;302+76=300+76+2,298-188=300-188-2,等。
(七)认真观察某项为0或1的运算。
如:7.93+2.07*(4.5-4.5)等。
总的说来,简便运算的思路是:(1)运用运算的性质、定律等。(2)可能打乱常规的计算顺序。(3)拆数或转化时,数的大小不能改变。(4)正确处理好每一步的衔接。(5)速算也是计算,是将硬算化为巧算。(6)能提高计算的速度及能力,并能培养严谨细致、灵活巧妙的工作习惯。
5. 算法编写: 帮忙在解释一下原理,谢谢
这个题可以有两种写法,一种是用单链表,把链表的尾连到链表的头上。
另一种是用数组来模拟,每次到尾部的时候,就把下脚标重置成0.
我下面写的是用数组模拟的。思路是这样的:
模拟一个真实的数数过程,如果数到3,就被淘汰,如果数到了末尾,就从头接着数,直到只剩下两个人为止。
在程序中,a[i]是一个标记,如果已经数到3,被淘汰,那么设置为1,如果没有数到三,则值为0;
然后写一个while循环,如果只剩2个人(count == 2)2,说明已经数完了,就退出循环,不然就一直数下去。这里,num是计数器,数到3就淘汰一人(a[index]=1)。
程序如下,已用devc++编译测试通过,结果正确。
#include <stdio.h>
int main()
{
int a[40];
int n;
printf("请输入一共有多少人: ");
scanf("%d", &n);
int count = n, num = 1, index = 0, i;
for(i = 0; i < n; i ++) a[i] = 0;//清零
while(count > 2)
{
if(a[index]) {index ++; if(index > n - 1) index = 0; continue;}
if(num == 3)
{
num = 1;
count --;
a[index] = 1;
index ++;
if(index > n - 1) index = 0;
continue;
}
num ++;
index ++;
if(index > n - 1) index = 0;
}
for(i = 0; i < n; i ++)
if(a[i]== 0) printf("%d\n", i + 1);
return 0;
}
6. 帮忙写个算法哈
若要在n个城市之间建设通信网络,只需要架设n-1条线路即可。如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。
(1)建立一个图,其存储方式可以采用邻接矩阵形式,需要定义两个数组,一个存储顶点,一个存储边,存储边的数组表明节点间的连通关系和边的权值;
(2)利用普里姆算法和克鲁斯卡尔算法求网的最小生成树;
(3)按顺序输出生成树中各条边以及它们的权值。
【算法描述】:
1 普里姆算法:以图中的节点为基础。从某一点出发,选择该点相连的边的最小边,直至图中所有节点都出现在生成树中。
2 克鲁斯克尔算法:以图中节点为基础。将图中的所有边按权值大小排列。从小到大依次选择边,知道这些边将所有节点都联通。
数据结构:
邻接矩阵(二维数组) 无向图(结构) 结构
【流程图】
主程序流程图
开始
创建图
调用prim算法
调用kruskul算法
结束
Prim伪码流程:
Prim(gragh g, char u)
{
辅助结构数组初始化;(点及其相连边最小权值结构数组)
初始一个节点;
For(i=1;i<g.arcnum;i++)
{
选择第i个顶点的最小相连边;
将另个顶点并入;
For(j=0;j<g.arcnum;j++)
新顶点并入后重新选择最小边;
}
}
Kruskul伪码流程:
Kruskul(graph g)
{
用邻接矩阵转换初始化 顶点边结构数组;
将顶点边结构数组按照边权值从小到大排列;
初始化顶点编号;
While(k<g.vexnum-1) //j,k初始为0
{
记录第几条边的两个顶点位置;
如果两个点的不再一个集合,则输出这条边;
For(i=0;i<g.vexnum-1;i++)
合并各条边的标记;
J++;//处理下一条边;
}