#include stdlib.h
我們提供的服務有:成都做網站、成都網站建設、成都外貿網站建設、微信公眾號開發、網站優化、網站認證、平樂ssl等。為上1000家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的平樂網站制作公司
#include math.h
#include stdio.h
int brinv(double a[], int n)
{ int *is,*js,i,j,k,l,u,v;
double d,p;
is=malloc(n*sizeof(int));
js=malloc(n*sizeof(int));
for (k=0; k=n-1; k++)
{ d=0.0;
for (i=k; i=n-1; i++)
for (j=k; j=n-1; j++)
{ l=i*n+j; p=fabs(a[l]);
if (pd) { d=p; is[k]=i; js[k]=j;}
}
if (d+1.0==1.0)
{ free(is); free(js); printf("err**not inv\n");
return(0);
}
if (is[k]!=k)
for (j=0; j=n-1; j++)
{ u=k*n+j; v=is[k]*n+j;
p=a[u]; a[u]=a[v]; a[v]=p;
}
if (js[k]!=k)
for (i=0; i=n-1; i++)
{ u=i*n+k; v=i*n+js[k];
p=a[u]; a[u]=a[v]; a[v]=p;
}
l=k*n+k;
a[l]=1.0/a[l];
for (j=0; j=n-1; j++)
if (j!=k)
{ u=k*n+j; a[u]=a[u]*a[l];}
for (i=0; i=n-1; i++)
if (i!=k)
for (j=0; j=n-1; j++)
if (j!=k)
{ u=i*n+j;
a[u]=a[u]-a[i*n+k]*a[k*n+j];
}
for (i=0; i=n-1; i++)
if (i!=k)
{ u=i*n+k; a[u]=-a[u]*a[l];}
}
for (k=n-1; k=0; k--)
{ if (js[k]!=k)
for (j=0; j=n-1; j++)
{ u=k*n+j; v=js[k]*n+j;
p=a[u]; a[u]=a[v]; a[v]=p;
}
if (is[k]!=k)
for (i=0; i=n-1; i++)
{ u=i*n+k; v=i*n+is[k];
p=a[u]; a[u]=a[v]; a[v]=p;
}
}
free(is); free(js);
return(1);
}
void brmul(double a[], double b[],int m,int n,int k,double c[])
{ int i,j,l,u;
for (i=0; i=m-1; i++)
for (j=0; j=k-1; j++)
{ u=i*k+j; c[u]=0.0;
for (l=0; l=n-1; l++)
c[u]=c[u]+a[i*n+l]*b[l*k+j];
}
return;
}
int main()
{ int i,j;
static double a[4][4]={ {0.2368,0.2471,0.2568,1.2671},
{1.1161,0.1254,0.1397,0.1490},
{0.1582,1.1675,0.1768,0.1871},
{0.1968,0.2071,1.2168,0.2271}};
static double b[4][4],c[4][4];
for (i=0; i=3; i++)
for (j=0; j=3; j++)
b[i][j]=a[i][j];
i=brinv(a,4);
if (i!=0)
{ printf("MAT A IS:\n");
for (i=0; i=3; i++)
{ for (j=0; j=3; j++)
printf("%13.7e ",b[i][j]);
printf("\n");
}
printf("\n");
printf("MAT A- IS:\n");
for (i=0; i=3; i++)
{ for (j=0; j=3; j++)
printf("%13.7e ",a[i][j]);
printf("\n");
}
printf("\n");
printf("MAT AA- IS:\n");
brmul(b,a,4,4,4,c);
for (i=0; i=3; i++)
{ for (j=0; j=3; j++)
printf("%13.7e ",c[i][j]);
printf("\n");
}
}
}
用一個隊列來實現。。。
首先把所有初始狀態入隊。。。然后把隊首元素出隊。。執行你需要進行的操作。。同時把出隊的元素所派生出來的符合你題目要求的狀態入隊。。
一直不停的循環。。下面我給你個非常簡單的例子:
Problem:求能被n整出的,求只有0和1構成的正十進制整數是多少(輸入:一個數N。當N=0是代表輸入結束。。。
源代碼如下:
#inlcude "stdio.h"
#include "string.h"
typedef struct QUEUE//建立一個隊列
{
int queue[1000];
int top;//尾
int low;//頭
}ST;
void main()
{
ST Queue;
int n;
while(scanf("%d",n)n)//當N為0是代表輸入結束
{
memset(Queue,0,sizeof(Queue));//隊列清零(memset()包含在string.h頭文件中)
Queue.queue[Queue.top=Queue.low=0]=1;//從一開始搜索
Queue.top++;
while(Queue.lowQueue.top)//當隊列不為空時,繼續循環
{
int s=Queue.queue[Queue.low++];//出隊列
if(!(s%n))
{
printf("%d\n",s);
break;
}
else //如果沒找到。。后面的數入隊列
{
Queue.queue[Queue.top++]=10*s;
Queue.queue[Queue.top++]=10*s+1;
}
}
}
}
這是一個很簡單也會一個很典型的廣度優先搜索。。。
因為這只是給你介紹一個概念。。所有就舉了最簡單的例子。。。
廣度優先其實很復雜。。還有各種優化。。。
先有個這樣的概念你以后在去學吧。。至于上面一個人的回答。你可以直接無視。。
他說的是關于廣度優先比價復雜的(雖然原理是一樣的)。。
改說的我都說了。。
給我分啊
我要分 。。。
G.arcs[i][j]其實就是一個鄰接矩陣中的一個數,INFINITY是無窮的意思,大概意思就是定義頂點i到j是不連通的,所以度當然為NULL了。
書上算法實現的問題,你只要有C語言基礎,然后注意每個C語言的結構體需要定義,還有就是書上的算法只是一個函數,不是主函數,主函數需要自己寫,而且,書上給的函數中它調用了前面所講的的函數,所以最好從前面開始寫代碼。
就線性表那你章,你要把結構體寫到程序代碼中去,然后要在主函數中定義它,最好從簡單的開始,如初始化鏈表,然后create建立鏈表,還有寫程序時要注意有些算法中的宏定義是沒有給出的,需要自己定義。
PS:要實現書上的算法要學會自己調試程序,自己看著哪里錯誤,然后去修改,一步一步來,就能行的,相信自己
你這是
參數傳遞
進去的其實是數組的地址,在函數內部修改了以后,數組的內容就已經真正的修改了,所以函數返回以后,繼續訪問這個數組,得到的數據就是修改以后的。
比如:
int array[12][12];
copy_arcs(arrar)
在訪問array就是修改后的數據了
網站欄目:c語言arcs函數 c中arctan編程函數
鏈接分享:http://vcdvsql.cn/article34/ddipepe.html
成都網站建設公司_創新互聯,為您提供網站制作、網站設計公司、網站收錄、電子商務、面包屑導航、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯