下面是BM算法的C语言源码,小弟看的不是太懂,求高手在重点位置加点标注既对每行代码解释一下,谢谢。。。 用c语言编写数据结构实例中有下面的代码,那个!是什么意思。整...

C\u8bed\u8a00\u4e2d \ \u7684\u4f5c\u7528

\u5728C\u8bed\u8a00\u4e2d\uff0c!\u7684\u610f\u601d\u662f\u5426\uff0c\u6bd4\u5982\u8bf41!=2\u5c31\u662f1\u22602\u7684\u610f\u601d\u3002

\u5f53!\u7b26\u53f7\u7528\u5728\u4e00\u4e2a\u53d8\u91cf\u53d8\u91cf\u5e76\u5d4c\u5957\u5728if\u4e2d\u65f6\u3002if(!newbase)\u610f\u601d\u5c31\u662f\u5f53newbase\u4e3a\u7a7a\u6216\u8005\u4e3a\u5047\u65f6\u9000\u51fa\u3002\u5047\u5982newbase\u662f\u4e00\u4e2achar\uff0cchar newbase=NULL;\u6b64\u65f6\uff0c!newbase\u4e3a\u771f\uff0c\u5c31\u6267\u884c\u9000\u51fa\u8bed\u53e5\u3002\u4f46\u662f\u5f53char newbase=abc\u65f6\uff0cnewbase\u4e3a\u771f\uff0c!newbase\u5c31\u4e3a\u5047\uff0c\u6b64\u65f6\u4e0d\u6267\u884c\u9000\u51fa\u8bed\u53e5\u3002

\u8fd9\u4e2a\u7b26\u53f7\u7ecf\u5e38\u5728C\u8bed\u8a00\u4e2d\u7528\u4f5c\u6761\u4ef6\u8bed\u53e5\u7684\u3002\u5f88\u7b80\u5355\uff0c\u5c31\u662f\u5426\u7684\u610f\u601d\u3002!\u771f\u5c31\u4e3a\u5047\uff0c!\u5047\u5c31\u4e3a\u771f

\u5e0c\u671b\u5bf9\u4f60\u6709\u5e2e\u52a9~

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页
************/

  • C璇█浜屼綅鏁扮粍姹傛瘡鍒楁渶灏忓肩殑琛屾暟(鍑虹幇0瑕佽烦杩)
    绛旓細杩欎釜瑙f硶灏辨槸姣忓垪鍙栨渶灏忓硷細瑙e喅鎬濊矾锛氬畾涔夌煩闃礎:n*m min:姣忓垪鏈灏忔暟锛宨ndex:姣忓垪鏈灏忔暟鐨勮鏁 sol[100];浼唬鐮侊細for i=0 to n-1 for j=0 to m-1 { min=100; //鏈澶т环閽 index=0; //榛樿涔颁笉鍒 if((min>A[i,j]) && (A[i,j]!=0)){min=A[i,j];index=i;} ...
  • 鍒╃敤C璇█瀹炵幇绉讳綅鍔犲瘑鍜岃В瀵绠楁硶
    绛旓細)a[i] += 2;printf("%s",a );} 杩欎釜鏄線鍚庢帹2鐨勮В瀵嗐俫 fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle.瑙e瘑璇曡瘯鍚э綖锝炲姞瀵嗙殑璇 鏀瑰姩涓変釜鍦版柟灏辫 鑷繁璇曡瘯鍚 鍝堝搱 ...
  • 鏁版嵁缁撴瀯C璇█鐗2.12,璇嶅吀娆″簭鐨勯棶棰樸
    绛旓細compare鍑芥暟涓庣郴缁熺殑鍑芥暟閲嶅悕浜 include "stdio.h"void compare_dic(char a[],char b[]) // error:expected ';', ',' or ')' before '&' token| { int n;printf("%c %c",a[0],b[0]);if(a[0]==b[0]){ //鍏堟妸0鑰冭檻涓 for(n=1;a[n]==b[n]&&(a[n-1]==b...
  • C璇█涓,fprintf(fp,"%s",BM)鏄粈涔堟剰鎬?
    绛旓細鍚慺p鎸囧悜鐨勬枃浠舵寚閽堣緭鍑轰竴涓瓧绗︿覆锛屽瓧绗︿覆鐨勫唴瀹逛负瀛樻斁鍦BM鍙橀噺涓殑瀛楃涓层
  • C璇█涓粈涔堝彨绠楁硶,绠楁硶鍦ㄧ▼搴忚璁′腑鐨勯噸瑕佷綔鐢
    绛旓細C璇█涓粈涔堝彨绠楁硶,绠楁硶鍦ㄧ▼搴忚璁′腑鐨勯噸瑕佷綔鐢ㄦ槸浠涔... C璇█涓粈涔堝彨绠楁硶,绠楁硶鍦ㄧ▼搴忚璁′腑鐨勯噸瑕...鑳介噰鐢ㄩ掑綊鎻忚堪鐨勭畻娉曢氬父鏈夎繖鏍风殑鐗瑰緛:涓烘眰瑙h妯′负N鐨勯棶棰,璁炬硶灏嗗畠鍒嗚В鎴愯妯¤緝灏忕殑闂,鐒跺悗浠
  • 浠涔堟槸瀹忓畾涔?
    绛旓細缂栬瘧鏃舵浛鎹紝鍥犱负灏婧愪唬鐮缈昏瘧鎴愬彲鎵ц鐨勬枃浠舵椂锛岃缁忚繃缂栬瘧鍜岄摼鎺ワ紝鎵嶈兘鐢熸垚鍙墽琛屾枃浠(exe),涔熷氨鏄湪杩欎釜杩囩▼涓紪璇戝櫒鐩存帴灏嗗畯鎵╁睍鎴愬畾涔夌殑鍐呭 闂浜旓細瀹忓畾涔夊湪浠涔堟槸浠涔 瀹忓畾涔夛紝鐩稿綋浜庡湪鍚庨潰绋嬪簭涓紝鎵鏈夐亣鍒板畯瀹氫箟鐨勫湴鏂癸紝鐩存帴鐢ㄥ悗闈㈢殑寮忓瓙鏇夸唬銆傚 BM瀹氫箟涓 #define BM(n) (1 ...
  • 鏁版嵁缁撴瀯C璇█鐨勫疄楠岄銆傝藩姹傚晩
    绛旓細/*浠ヤ笅绋嬪簭鏄嚎鎬ц〃鍚堝苟鎿嶄綔鐨凜璇█缁忓吀绋嬪簭锛屼綘鍙互鏍规嵁闇瑕佽繘琛岄傚綋淇敼*/ include<stdio.h> include<stdlib.h> /*绾挎ц〃*/ struct TLink { int data;struct TLink * next;};/*end struct TLink*/ /*鐢熸垚鏂板厓绱*/ struct TLink * new_item(int number){ struct TLink * r = 0;r =...
  • c璇█缂栫▼璁$畻(a*b)%c
    绛旓細鐩存帴浜屽垎骞傚彇妯★紝so easy锛乮nclude<stdio.h> int pow_mod(int a,int b,int c){ int t;if(b==0)return 1;if(b==1)return a%c;t=pow(a,b/2,c);t=t*t%c;if(b&1==1)t=t*a%c;return t;} int main(){ int a,b,c;while(scanf("%d%d%d",&a,&b,&c)!=EOF){ pr...
  • 濡備綍鐢C璇█瀵瑰僵鑹插浘鍍忚繘琛屼簩鍊煎寲?
    绛旓細pragma pack(1)define R 30 define G 59 define B 11 define ONE 255 define ZERO 0 typedef unsigned short WORD;typedef unsigned long DWORD;typedef long LONG;typedef unsigned char BYTE;typedef struct tagBITMAPFILEHEADER { // bmfh WORD bfType; // 浣嶅浘鏂囦欢鐨勭被鍨嬶紝蹇呴』涓BM DWORD bfSize;...
  • 璇峰府蹇欑敤鑻辨枃缈昏瘧涓嬭繖娈垫憳瑕,鎬!
    绛旓細BF, KMP, BM algorithm and so on, has analyzed these three algorithms with the writing and the chart of symbols, then used the C language to carry on to the KMP algorithm has realized, based on this and proposed one KMP algorithm corrective method.鍙傝冭祫鏂欙細鎽樿嚜闆呰檸缈昏瘧 ...
  • 扩展阅读:编程必背100个代码 ... 少儿python编程自学 ... 黑客编程必背50个代码 ... cnc编程必背50个程序 ... c++和python先学哪个 ... 最浪漫的编程代码 ... 吓人的编程代码 ... 生日编程代码免费复制 ... c语言必背100代码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网