下面是BM算法的C语言源码,小弟看的不是太懂,求高手在重点位置加点标注既对每行代码解释一下,谢谢。。。

作者&投稿:荡差 (若有异议请与网页底部的电邮联系)
C语言中 \ 的作用~

在C语言中,!的意思是否,比如说1!=2就是1≠2的意思。

当!符号用在一个变量变量并嵌套在if中时。if(!newbase)意思就是当newbase为空或者为假时退出。假如newbase是一个char,char newbase=NULL;此时,!newbase为真,就执行退出语句。但是当char newbase=abc时,newbase为真,!newbase就为假,此时不执行退出语句。

这个符号经常在C语言中用作条件语句的。很简单,就是否的意思。!真就为假,!假就为真

希望对你有帮助~

Dijkstra算法--c++源代码--by 伟伟猪 [转贴 2005-12-15 20:21:00 ] 发表者: 伟伟猪

/***********************************************
设G=(V,E)是一个每条边都有非负长度的有向图,有一个特异的顶点s称为缘。
单源最短路径问题,或者称为最短路径问题,是要确定从s到V中没一个其他
顶点的距离,这里从顶点s到x的距离定义为从s到x的最短路径问题。这个问题
可以用Dijkstra算法解决。下面我给我了c++下的源代码! --by 伟伟猪
************************************************/
#include<iostream.h>
void main()
{
int infinity=100,j,i,n,k,t,**w,*s,*p,*d;
cout<<"input the value of n:";
cin>>n;
cout<<endl;

d=new int[n];
s=new int[n];
p=new int[n];
w=new int*[n];
for(i=0;i<n;i++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>w[i][j];

for(s[0]=1,i=1;i<n;i++)
{
s[i]=0;d[i]=w[0][i];
if(d[i]<infinity) p[i]=0;
else p[i]=-1;
}

for(i=1;i<n;i++)
{
t=infinity;k=1;
for(j=1;j<n;j++)
if((!s[j])&&(d[j]<t))
s[k]=1;//point k join the S
for (j=1;j<n;j++)
if((!s[j])&&(d[j]>d[k]+w[k][j]))

}
cout<<"从源点到其它顶点的最短距离依次如下:";
for(i=1;i<n;i++) cout<<d[i]<<" ";

}
/*********
顶点个数用n表示,这里给出的例子n=6
100 1 12 100 100 100
100 100 9 3 100 100
100 100 100 100 5 100
100 100 4 100 13 15
100 100 100 100 100 4
100 100 100 100 100 100
具体例子见 电子工业出版社 《算法设计技巧与分析》148页
************/

md5 算法程序+详细注释,高分求教!
答:虽然这些 算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电 脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述(http://www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由ronald l. rivest在...

如何编写C语言程序?
答:首先,你需要学会c语言的基础语法,那么你就可以写一些简单的程序了。想要进阶就要进一步深入学习算法等。其次,学习编程语言必须要有兴趣,兴趣不够很容易半途而废。格式的话,养成良好的缩进习惯有助于别人和自己更容易看懂代码。推荐一本书<<c primer plus>>写的很不错。你还需要安装ide,推荐安装...

求懂matlab和C语言的大神,同样的算法,为什么出来的结果完全不同...
答:C和m是一样的,应该是程序哪里的写的不一样了 我算了一个结果 R21 415.1978 R31 500.1297 R41 244.0419 Current_X 71.09866 Current_Y 84.45123 你看看和你的哪个是一样的,我用excel 算的

c语言数据结构(考题,测试你的能力)--编写源代码
答:/*先序遍历二叉树算法,t为指向根结点的指针*/ { if (t!=NULL) {printf("%d ",t->data); preorder(t->lch); preorder(t->rch); } }P113 C语言的中序遍历算法:void inorder(tnodetype *t)/*中序遍历二叉树算法,t为指向根结点的指针*/{ if(t!=NULL) {inorder(t->lch); printf("%d "...

以下是具体给出的算法,用c语言表示出来(要用到数组)
答:include<stdio.h> void main(void){ int k,a[80],i,n,c[80],x[80];printf("please input the n~!\n");scanf("%d",n);for(i=0;i<n;i++)scanf("%d",&a[i]);c[0]=1;for(k=0;k<=n-1;k++)for(i=n;i>k;i--)c[i]=(c[i]-c[i-1])/(a[i]-a[i-k-1])...

c语言编程,数据结构,关于算法和随机生成数!(难道真没人吗)
答:算法都很简单,你可以自己写的。include <iostream> include <algorithm> include <stdlib.h> include using namespace std;define N_SiZE 25000 int RandInt(int i,int j){ return ((rand()%(j-i))+i);} void _Rand_1(int *A,int N){ int i,j,Ram;clock_t t1,t2;double duration...

急求一道c语言编程的答案!!时间急迫!!快快!!
答:cout<<"3余1的数放在中间,而所有除以3余2的数放在最右边.要求算法的时间尽可能少. "<<endl;cout<<endl<<"数组中元素的值在1~n之间变化,请输入n的值:";cin>>n;for(i=0;i<MAX_SIZE;i++) //插入随机数 array[i]=rand()%n;cout<<"排序前:"<<endl;display(array,MAX_SIZE)...

C语言24点的算法?
答:printf("Found solution,RES=%f,((%d%c%d)%c%d)%c%d\n",RES[L],(int)f[0],op[0],(int)f[1],op[1],(int)f[2],op[2],(int)f[3]);exit(0);} return;} for(int j=0;j<5;++j){//j judges for operators if(j==0){RES[L+1]=RES[L]+tmp[L+1];op[L]='+'...

谁可以帮我写一下下面题的C语言程序,还有算法?谢谢·
答:include "stdio.h"include "math.h"include "stdlib.h"int main(){ char s[200]="1234567";char t[200];int count=0;while(s[i]!='\0'){ if(i %2 != 0) count++;} while(count>0){ t[2*count-1]=t[2*count-2]=s[count*2-1];printf("%c%c",t[2*count-1],t[2*...

C语言想知道这个题是需要用什么算法数据结构:供水计划
答:线段树。。。还有一个贪心算法,不知道对不对 include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;class TimeInterval {public:int begin, end;bool operator<(const TimeInterval& another) const {return end > another.end;}};bool cmp(const TimeInterval...