2012ºÓ±±Ê¡java°æ±¾¼ÓÇ¿ ÏÂÔØ±¾ÎÄ

void Translation£¨float *matrix£¬int n£©

//±¾Ëã·¨¶Ôn¡ÁnµÄ¾ØÕómatrix£¬Í¨¹ýÐб任£¬Ê¹Æä¸÷ÐÐÔªËØµÄƽ¾ùÖµ°´µÝÔöÅÅÁС£ {int i,j,k,l£»

float sum£¬min£» //sumÔÝ´æ¸÷ÐÐÔªËØÖ®ºÍ float *p, *pi, *pk; for(i=0; i

{sum=0.0; pk=matrix+i*n; //pkÖ¸Ïò¾ØÕó¸÷ÐеÚ1¸öÔªËØ.

for (j=0; j

for(i=0; i

for(j=i+1;j

{sum=*(pk+j); *(pk+j)=*(pi+j); *(pi+j)=sum;}

sum=p[i]; p[i]=p[k]; p[k]=sum; //½»»»Ò»Î¬Êý×éÖÐÔªËØÖ®ºÍ. }//if }//for i

free(p); //ÊÍ·ÅpÊý×é. }// Translation

[Ëã·¨·ÖÎö] Ëã·¨ÖÐʹÓÃÑ¡Ôñ·¨ÅÅÐò,±È½Ï´ÎÊý½Ï¶à,µ«Êý¾Ý½»»»(ÒÆ¶¯)½ÏÉÙ.ÈôÓÃÆäËüÅÅÐò·½·¨,Ëä¿É¼õÉٱȽϴÎÊý,µ«Êý¾ÝÒÆ¶¯»áÔö¶à.Ë㷨ʱ¼ä¸´ÔÓ¶ÈΪO(n2).

10¡¢¸ù¾Ý¶þ²æÅÅÐòÊ÷ÖÐÐò±éÀúËùµÃ½áµãֵΪÔöÐòµÄÐÔÖÊ£¬ÔÚ±éÀúÖн«µ±Ç°±éÀú½áµãÓëÆäǰÇý½áµãÖµ±È½Ï£¬¼´¿ÉµÃ³ö½áÂÛ£¬Îª´ËÉèÈ«¾ÖÖ¸Õë±äÁ¿pre£¨³õֵΪnull£©ºÍÈ«¾Ö±äÁ¿flag£¬³õֵΪtrue¡£Èô·Ç¶þ²æÅÅÐòÊ÷£¬ÔòÖÃflagΪfalse¡£ #define true 1 #define false 0 typedef struct node

{datatype data; struct node *llink,*rlink;} *BTree; void JudgeBST£¨BTree t,int flag£©

// Åж϶þ²æÊ÷ÊÇ·ñÊǶþ²æÅÅÐòÊ÷£¬±¾Ëã·¨½áÊøºó£¬ÔÚµ÷ÓóÌÐòÖÐÓÉflagµÃ³ö½áÂÛ¡£ { if£¨t!=null && flag£©

{ Judgebst£¨t->llink,flag£©£»// ÖÐÐò±éÀú×ó×ÓÊ÷

if£¨pre==null£©pre=t£»// ÖÐÐò±éÀúµÄµÚÒ»¸ö½áµã²»±ØÅжÏ

else if£¨pre->datadata£©pre=t£»//ǰÇýÖ¸ÕëÖ¸Ïòµ±Ç°½áµã else{flag=flase£»} //²»ÊÇÍêÈ«¶þ²æÊ÷ Judgebst £¨t->rlink,flag£©£»// ÖÐÐò±éÀúÓÒ×ÓÊ÷ }//JudgeBSTËã·¨½áÊø

11¡¢¼ÙÉèÒÔÁÚ½Ó¾ØÕó×÷ΪͼµÄ´æ´¢½á¹¹£¬±àдËã·¨ÅбðÔÚ¸ø¶¨µÄÓÐÏòͼÖÐÊÇ·ñ´æÔÚÒ»¸ö¼òµ¥ÓÐÏò»ØÂ·£¬Èô´æÔÚ£¬ÔòÒÔ¶¥µãÐòÁеķ½Ê½Êä³ö¸Ã»ØÂ·£¨ÕÒµ½Ò»Ìõ¼´¿É£©¡££¨×¢£ºÍ¼Öв»´æÔÚ¶¥µãµ½×Ô¼ºµÄ»¡£©

ÓÐÏòͼÅжϻØÂ·Òª±ÈÎÞÏòͼ¸´ÔÓ¡£ÀûÓÃÉî¶ÈÓÅÏȱéÀú£¬½«¶¥µã·Ö³ÉÈýÀࣺδ·ÃÎÊ£»ÒÑ·ÃÎʵ«ÆäÁÚ½Óµãδ·ÃÎÊÍê;ÒÑ·ÃÎÊÇÒÆäÁÚ½ÓµãÒÑ·ÃÎÊÍê¡£ÏÂÃæÓÃ0£¬1£¬2±íʾÕâÈýÖÖ״̬¡£Ç°ÃæÒÑÌáµ½£¬Èôdfs£¨v£©½áÊøÇ°³öÏÖ¶¥µãuµ½vµÄ»Ø±ß£¬ÔòͼÖбØÓаüº¬¶¥µãvºÍuµÄ»ØÂ·¡£¶ÔÓ¦³ÌÐòÖÐvµÄ״̬Ϊ1£¬¶øuÊÇÕý·ÃÎʵĶ¥µã£¬ÈôÎÒÃÇÕÒ³öuµÄÏÂÒ»ÁÚ½ÓµãµÄ״̬Ϊ1£¬¾Í¿ÉÒÔÊä³ö»ØÂ·ÁË¡£

void Print(int v,int start ) //Êä³ö´Ó¶¥µãstart¿ªÊ¼µÄ»ØÂ·¡£ {for(i=1;i<=n;i++)

if(g[v][i]!=0 && visited[i]==1 ) //Èô´æÔڱߣ¨v,i£©£¬ÇÒ¶¥µãiµÄ״̬Ϊ1¡£ {printf(¡°%d¡±,v);

if(i==start) printf(¡°\\n¡±); else Print(i,start);break;}//if }//Print void dfs(int v) {visited[v]=1; for(j=1;j<=n;j++ )

if (g[v][j]!=0) //´æÔÚ±ß(v,j)

if (visited[j]!=1) {if (!visited[j]) dfs(j); }//if else {cycle=1; Print(j,j);} visited[v]=2; }//dfs

void find_cycle() //ÅжÏÊÇ·ñÓлØÂ·£¬ÓÐÔòÊä³öÁÚ½Ó¾ØÕó¡£visitedÊý×éΪȫ¾Ö±äÁ¿¡£ {for (i=1;i<=n;i++) visited[i]=0;

for (i=1;i<=n;i++ ) if (!visited[i]) dfs(i); }//find_cycle