篇一 :十大算法总结

数学建模十大经典算法

*******************************************************

1.蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。

2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具。

3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。

4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。

5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。

6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。

7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。

8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。

9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。

10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MATLAB 进行处理。

…… …… 余下全文

篇二 :算法与编程总结报告

算法与编程总结报告

姓名: 陈凡超

学号: 11083136

专业: 信息对抗

时间:2012.6.14 - 6.26

————————————————————

目录

1.统计字母频率 (代码)

2.指示灯控制 (代码)

3.数字游戏 (代码)

4.判断点是否在三角形内 (代码+思路)

5.文件处理 - 通讯录 (代码+思路)

————————————————————

1.统计字母频率

代码:

#include<stdio.h>

int A_a( char a[] ){

}

void compile( char a[] , int b[] ){

}

int sort( int a[] , int b[] ){

}

int main( void ){

int est; printf("Input : 1 - 继续\n 0 - 结束\n"); while( scanf("%d",&est) , est==1 ){ char a[209]; int i; int output[26],output_n[26]; printf("请输入一个不包括空格的字母字符串,长度不大于200\n"); int i,max,x; int c[26]; for( i=0 ; i<26 ; i++ ) c[i]=a[i]; for( i=0 ; i<26 ; i++ ){ } int n,m; for( n=0,max=-1 ; n<26 ; n++ ) if( c[n]>max ) max=c[n] , m=n; b[i]=m , c[m]=-1; int i; for( i=0 ; i<26 ; i++ ) b[i]=0; /*b[]的初始化*/ for( i=0 ; a[i]!='\0' ; i++ ){ } b[ a[i]-97 ]++; /*大写转化成小写*/ int i; for( i=0 ; a[i]!='\0' ; i++ ){ } return 1; /*字符串正确返回1,错误返回0*/ if( a[i]<='Z'&&a[i]>='A' ) a[i]+=32; else{ } if( a[i]<'a'||a[i]>'z' ) return 0;

…… …… 余下全文

篇三 :C程序设计算法总结举例

C程序设计算法总结举例

1.顺序结构举例

(该类题目,通常输入一些数据,再通过使用一个或几个数学公式求解,通过赋值表达式得到结果,并输出。包括求三角形面积,相关物体体积,求温度,解二元一次方程组、一元二次方程等)

1-1.求温度转换 华氏-摄氏温度转换公式:c=5/9(f-32)

#include <stdio.h>

main()

{

    float c, f;

    scanf("%f", &f);

    c = 5.0 / 9 *(f - 32);

    //注意:如果写成5/9则结果为零,同种类型变量进行运算结果还是该类型。

    printf("c is : %f", c);

}

1-2.分解一个三位数的每位数字:

a = x / 100 % 10;

b = x / 10 % 10;

c = x % 10;

2.选择结构算法举例

该类题目往往根据输入进行条件判断,得到相应的值或者执行相应的操作,包括:分段函数求值,求最值,判断大小并交换,求分数等级(switch--case,if-else if...),判断闰年,判断一个5位数是否回文数如12321就是回文数,判断一个数字是几位数等)


2-1.分段函数求值

算法关键:

float x, y;

if (x <= 10)

     y = 10;

else   if (x <= 50)   //其含义实质为(x>10&&x<=50)

…… …… 余下全文

篇四 :《程序员编程艺术:面试和算法心得》第二部分算法心得

第四章 查找匹配

4.1有序数组的查找

题目描述

给定一个有序的数组,查找某个数是否在数组中,请编程实现。

分析与解法

一看到数组本身已经有序,我想你可能反应出了要用二分查找,毕竟二分查找的适用条件就是有序的。那什么是二分查找呢?

二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。其算法流程如下:

?

?

? 一开始,范围覆盖整个数组。 将数组的中间项与T进行比较,如果T比数组的中间项要小,则到数组的前半部分继续查找,反之,则到数组的后半部分继续查找。 如此,每次查找可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。

对于包含N个元素的表,整个查找过程大约要经过log(2)N次比较。

此时,可能有不少读者心里嘀咕,不就二分查找么,太简单了。

然《编程珠玑》的作者Jon Bentley曾在贝尔实验室做过一个实验,即给一些专业的程序员几个小时的时间,用任何一种语言编写二分查找程序(写出高级伪代码也可以),结果参与编写的一百多人中:90%的程序员写的程序中有bug(我并不认为没有bug的代码就正确)。

也就是说:在足够的时间内,只有大约10%的专业程序员可以把这个小程序写对。但写不对这个小程序的还不止这些人:而且高德纳在《计算机程序设计的艺术 第3卷 排序和查找》第6.2.1节的“历史与参考文献”部分指出,虽然早在19xx年就有人将二分查找的方法公诸于世,但直到19xx年才有人写出没有bug的二分查找程序。

你能正确无误的写出二分查找代码么?不妨一试,关闭所有网页,窗口,打开记事本,或者编辑器,或者直接在本文评论下,不参考上面我写的或其他任何人的程序,给自己十分钟到N个小时不等的时间,立即编写一个二分查找程序。

…… …… 余下全文

篇五 :短学期算法与编程实验报告

算法与编程实验报告

            姓名:

            学号:

            班级:

            专业:

            指导教师:

统计字母的使用频率

1 问题详细描述

为统计英文字母的使用频率,输入一个不包括空格的由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率,不区分大小写。最后按使用频率从大到小输出字母(小写字母)和使用频率(出现的次数)。

2 流程图

短学期算法与编程实验报告                                                                                            

…… …… 余下全文

篇六 :算法与编程实习报告

算法与编程实习报告

第一题:统计字母的使用频率

一、题目:统计字母的使用频率

目的与要求

1.目的:

通过编写程序统计字母的使用频率,培养学生综合利用C语言进行程序设计的能力,熟悉字符串的操作方法,加强函数的运用,提高软件系统分析能力和程序文档建立、归纳总结的能力。

2.基本要求:

  1)要求用C语言编程,在Visual C++环境下调试完成;

  2)要求按照程序功能分成几个功能模块来实现,各个功能模块分别使用函数来完成;

  3)要求应用本课所讲授的程序设计语言知识来解决问题

设计方法和基本原理

1.课题功能描述:本程序的功能,就是要统计英文字母的使用频率。

2.问题详细描述

   为统计英文字母的使用频率,输入一个不包括空格的由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率,不区分大小写。最后按使用频率从大到小输出字母(小写字母)和使用频率(出现的次数)。

3.问题的解决方案

    按照程序要求,本程序应采用模块化设计方法,设计几个功能模块。例如(仅供参考):

   ◆  将字符串中的大写字母转换为小写字母

   ◆  统计输入的字符串中字母的使用频率

   ◆  按使用频率从大到小进行排序

   主函数中控制输入、函数调用和输出。

主要技术问题的描述

根据三的分析,主要问题在于:

1)为统计字母的使用频率,定义一个长度为26的int数组存放所统计的各个字母的使用频率。

2)在统计字母的使用频率时,不要使用if语句或switch语句,利用字母的ASCII码与数组元素下标之间的关系来求得。

3)按使用频率从大到小进行排序时,建议使用指针数组更为方便。

…… …… 余下全文

篇七 :编程算法大全

1.求两数的最大公约数

function gcd(a,b:integer):integer; begin

if b=0 then gcd:=a

else gcd:=gcd (b,a mod b); end ;

2.求两数的最小公倍数

function lcm(a,b:integer):integer; begin

if a<b then swap(a,b);

lcm:=a;

while lcm mod b>0 do inc(lcm,a); end;

3.素数的求法

A.小范围内判断一个数是否为质数: function prime (n: integer): Boolean; var I: integer;

begin

for I:=2 to trunc(sqrt(n)) do if n mod I=0 then begin prime:=false; exit;

end;

prime:=true;

end;

B.判断longint范围内的数是否为素数(包含求50000以内的素数表): procedure getprime;

var

i,j:longint;

p:array[1..50000] of boolean;

begin

fillchar(p,sizeof(p),true);

p[1]:=false;

i:=2;

while i<50000 do begin

if p[i] then begin

j:=i*2;

while j<50000 do begin

p[j]:=false;

inc(j,i);

end;

end;

inc(i);

end;

l:=0;

for i:=1 to 50000 do

if p[i] then begin

inc(l);pr[l]:=i;

…… …… 余下全文

篇八 :VB编程用经常要要用到的算法(经典)

一、计数、求和、求阶乘等简单算法

此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。

例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。

本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,??个位是0的个数存放在x(10)。 将程序编写在一个GetTJput过程中,代码如下:

Public Sub GetTJput()

Dim a(1 To 100) As Integer

Dim x(1 To 10) As Integer

Dim i As Integer, p As Integer

'产生100个[0,99]范围内的随机整数,每行10个打印出来

For i = 1 To 100

a(i) = Int(Rnd * 100)

If a(i) < 10 Then

Form1.Print Space(2); a(i);

Else

Form1.Print Space(1); a(i);

End If

If i Mod 10 = 0 Then Form1.Print

Next i

'统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数,并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来

For i = 1 To 100

p = a(i) Mod 10 ' 求个位上的数字

If p = 0 Then p = 10

x(p) = x(p) + 1

…… …… 余下全文