當前位置:首頁 » 編程語言 » 迴路C語言

迴路C語言

發布時間: 2022-08-11 08:47:52

⑴ 如何用c語言或c++判斷是否是歐拉迴路

一個無向圖存在歐拉迴路,當且僅當該圖所有頂點度數都為偶數,且該圖是連通圖
一個有向圖存在歐拉迴路,所有頂點的入度等於出度且該圖是連通圖
可以用鄰接矩陣或者鄰接表,做一次DFS或者BFS訪問各個節點判斷入度出度就行

⑵ C語言 克魯斯卡爾演算法怎麼判斷是否構造成迴路求大手解答

使用並查集,每個講克魯斯卡爾的演算法都會涉及並查集。
初始為每個頂點屬於互不相同的集合,當添加一條邊時,就把這兩條邊的頂點加入到同一集合。如果邊的兩頂點屬於不同集合,就可以添加這條邊,否則就不可以添加(會構成迴路)。
對於集合的操作,有子集的劃分。前幾天的天津還是哪個regional網路預賽,就有個子集劃分的題目。

⑶ 三相橋式全控整流電路c語言程序

三相橋式全控整流電路
應用最為廣泛,共陰極組——陰極連接在一起的3個晶閘管(VT1,VT3,VT5)共陽極組——陽極連接在一起的3個晶閘管(VT4,VT6,VT2)
編號:1、3、5,4、6、2
a 帶電阻負載時的工作情況

a =0°時的情況
假設將電路中的晶閘管換作二極體進行分析對於共陰極阻的3個晶閘管,陽極所接交流電壓值最大的一個導通對於共陽極組的3個晶閘管,陰極所接交流電壓值最低(或者說負得最多)的導通
任意時刻共陽極組和共陰極組中各有1個晶閘管處於導通狀態
從相電壓波形看,共陰極組晶閘管導通時,ud1為相電壓的正包絡線,共陽極組導通時,ud2為相電壓的負包絡線,ud=ud1 - ud2是兩者的差值,為線電壓在正半周的包絡線直接從線電壓波形看, ud為線電壓中最大的一個,因此ud波形為線電壓的包絡線。
三相橋式全控整流電路的特點:
(1)2管同時通形成供電迴路,其中共陰極組和共陽極組各1,且不能為同1相器件。
(2)對觸發脈沖的要求:
按VT1-VT2-VT3-VT4-VT5-VT6的順序,相位依次差60°。
共陰極組VT1、VT3、VT5的脈沖依次差120°,共陽極組VT4、VT6、VT2也依次差120°同一相的上下兩個橋臂,即VT1與VT4,VT3與VT6,VT5與VT2,脈沖相差180°。
表2-1 三相橋式全控整流電路電阻負載a=0°時晶閘管工作情況
時 段 I II III IV V VI
共陰極組中導通的晶閘管 VT1 VT1 VT3 VT3 VT5 VT5
共陽極組中導通的晶閘管 VT6 VT2 VT2 VT4 VT4 VT6
整流輸出電壓Ud Ua-Ub=Uab Ua-Uc=Uac Ub-Uc=Ubc Ub-Ua=Uba Uc-Ua=Uca Uc-Ub=Ucb
(3)ud一周期脈動6次,每次脈動的波形都一樣,故該電路為6脈波整流電路。
(4)需保證同時導通的2個晶閘管均有脈沖可採用兩種方法:一種是寬脈沖觸發另一種方法是雙脈沖觸發(常用)。

(5)晶閘管承受的電壓波形與三相半波時相同,晶閘管承受最大正、反向電壓的關系也相同 a=30°時的工作情況從wt1開始把一周期等分為6段,ud波形仍由6段線電壓構成,每一段導通晶閘管的編號等仍符合表2-1的規律區別在於:晶閘管起始導通時刻推遲了30°,組成ud的每一段線電壓因此推遲30°變壓器二次側電流ia波形的特點:在VT1處於通態的120°期間,ia為正,ia波形的形狀與同時段的ud波形相同,在VT4處於通態的120°期間,ia波形的形狀也與同時段的ud波形相同,但為負值。a=60°時工作情況ud波形中每段線電壓的波形繼續後移,ud平均值繼續降低。a=60°時ud出現為零的點。

⑷ 用C語言畫一簡單電路圖

void cb_line(int x1,int y1,int x2,int y2) /*draw a line*/
{
int dx,dy,n,k,i,f;
int x,y;
dx=abs(x2-x1);
dy=abs(y2-y1);
n=dx+dy;
if(x2>=x1)
{
k=y2>=y1?1:4;
x=x1;
y=y1; /* k stands for the slope of line*/
}
else
{
k=y2>=y1?2:4;
x=x1;
y=y1;
}

for(i=0,f=0;i<n;i++)
if(f>=0)
switch(k)
{
case 1:putpixel(x++,y,3);f-=dy;break;
case 2:putpixel(x,y++,3);f-=dx;break;
case 3:putpixel(x--,y,3);f-=dy;break;
case 4:putpixel(x,y--,3);f-=dx;break;
}
else
switch(k)
{
case 1:putpixel(x,y++,3);f+=dx;break;
case 2:putpixel(x--,y,3);f+=dy;break;
case 3:putpixel(x,y--,3);f+=dx;break;
case 4:putpixel(x++,y,3);f+=dy;break;
}
}

⑸ C語言找出費用最低的迴路

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#defineSIZE6
structNode
{
intr[SIZE];
structNode*next;
}head={{0},NULL},*current=&head;
voidswap(int*a,int*b)
{
intt=*a;
*a=*b;
*b=t;
}
voidarrange(intm,intn,int*data)
{
//outputafullarrange
if(m==n)
{
structNode*node=(structNode*)malloc(sizeof(structNode));
memcpy(node->r,data,SIZE*sizeof(int));
current->next=node;
current=node;
}
else
{
inti;
for(i=m;i<=n;i++)
{
swap(&data[m],&data[i]);
arrange(m+1,n,data);
swap(&data[m],&data[i]);
}
}
}
intmain()
{
constintcost[5][5]={ {0,10,2,9,11},
{10,0,8,11,6},
{2,8,0,3,8},
{9,11,3,0,9},
{11,6,8,9,0}
};
intmap[SIZE]={0,1,2,3,4,0},min_cost=1000,*minp;
arrange(1,4,map);
structNode*p;
for(p=head.next;p;p=p->next){
inti,sum=0;
for(i=0;i<SIZE-1;i++)
sum+=cost[p->r[i]][p->r[i+1]];
if(sum<min_cost){
min_cost=sum;
minp=p->r;
}
}
inti;
printf("Mincostroad:");
for(i=0;i<SIZE;i++)
printf("%c",minp[i]+'A');
printf("cost:%d ",min_cost);

return0;
}

⑹ 求大神回答,用C語言實現離散數學中的Fleury演算法,最後結果要求1、判斷是否為歐拉圖;2、輸出歐拉迴路

#include "SqStack.h" //
堆棧的常見操作

#include "Queue.h"//
隊列的常見操作

typedef int Graph[200][200];
int v,e;

void DFS(Graph &G
,SqStack &S,int x,int t)
{

int k=0,i,m,a;

Push(S,x);

for(i=t;i<v;i++)

if(G[i][x]>0)

{

k=1;

G[i][x]=0; //
刪除此邊

G[x][i]=0;

DFS(G
,S,i,0);

break;

}//if,for

if(k==0)

{

Pop(S);

GetTop(S,m);

G[x][m]=1;

G[m][x]=1;

a=x+1;

if(StackLength(S)!=e)

{
Pop(S);

DFS(G
,S,m,a);

}//if

else

Push(S,x);

}//if
}//DFS

int BFSTest(Graph G)
{

int a[200],x,i,k=0;

LinkQueue Q;

InitQueue(Q);

EnQueue(Q,0);

for(i=0;i<v;i++)

a[i]=0;

a[0]=1;

while(!QueueEmpty(Q))

{

DeQueue(Q,x);

for(i=0;i<v;i++)

if(G[x][i]>0)

if(a[i]!=1)

{

a[i]=1;

EnQueue(Q,i);

}//if

}//while

for(i=0;i<v;i++)

if(a[i]==0)

{

k=1;

break;

}

if(k==1)

return 0;

else

return 1;
}

void Euler(Graph &G
,int x)

{

int m;

SqStack S;

InitStack(S);

DFS(G
,S,x,0);

printf("
該圖的一個歐拉迴路為:
");

while(!StackEmpty(S))

{

GetTop(S,m);

printf("->v%d",m);

Pop(S);

}//while
}

void InputM1(Graph &G)
{

int h,z;
printf("Please input
頂點數和邊數
\n");
scanf("%d",&v);
scanf("%d",&e);
for(int i=0;i<v;i++)

for(int j=0;j<v;j++)

G[i][j]=0;

printf("please int the
鄰接矩陣的值
(
起點
(
數字
)
終點
(
數字
))

\n");
for(int i=0;i<e;i++)

{

scanf("%d",&h);

scanf("%d",&z);

G[h-1][z-1]=1;

G[z-1][h-1]=1;

}//for
}//InputM1
int main()
{

int i,j,sum,k=0;

Graph G;

InputM1(G);

if(BFSTest(G)==0)

{

printf("
該圖不是連通圖
!\n");

exit(0);

}//if

for(i=0;i<v;i++)

{

sum=0;

for(j=0;j<v;j++)

sum+=G[i][j];

if(sum%2==1)

{
k=1;

break;

}//if

}//for

if(k==1) printf("
該圖不存在歐拉迴路!
\n");

else

Euler(G,0);
return 1;
}

⑺ 如何用c語言設計電路板程序

如何用C語言設計電路板程序,就好像怎麼用筷子吃菜一樣。C語言只是一種語言,是一種工具,根據您電路板需要實現的功能,去編寫對應的程序。建議實際做些小電路板,邊玩邊編程,這樣應用起來更得心應手和進步快些。

⑻ 圖中找迴路 C語言編程 跪求大神幫助 高分懸賞 採納 追加分數

簡單提示:
(1)可以用矩陣表示圖
(2)用深入優先(DFS)從任 一頂點v0開始搜索,在搜索過程中標記訪問過的頂點和邊,如果有某個頂點未訪問,且該頂點有一條邊與v0相連,即找到一條迴路。

偽碼差不多是這個樣子吧。
int DFS(Graph G,int vj)
{
visited[vj]=TRUE;
for(vj所有鄰接點vi)
{
if(visited[vi]=FALSE)
{
if(Edge[vj][vi]==FALSE && vi是初始頂點v0)
{
顯示一條迴路,退出
}
DFS(G,vi);
Edge[v0][vi]=TRUE;
}
}
}

⑼ 任務:對於給定的n個點和連接這n個點的m條邊,用C語言編程計算一筆畫迴路.

題目很簡單,從演算法上說,你只要判斷每個點與其它的點連接的邊數為偶數就可以了,如果滿足這個條件,從任意點出發都可以,如果不滿足,則不存在一筆畫迴路

演算法如此,代碼自己寫了

相關數學理論,請google 七橋問題

⑽ 怎樣編寫求一個有向圖所有迴路的C語言源程序

大體思路吧,做一個標記,遇到/*做一個標記(因為C語言只有/**/注釋,如果是C++的話//也是注釋),此標記為真時不向另一個文件中寫入,遇到*/時標記為假,則斷續寫入就OK了

熱點內容
微信視頻如何重新緩存 發布:2025-01-21 04:44:41 瀏覽:879
pdf壓縮文件大小 發布:2025-01-21 04:40:24 瀏覽:798
linux解壓文件到指定 發布:2025-01-21 04:38:36 瀏覽:874
自己做的安卓app怎麼下載 發布:2025-01-21 04:35:07 瀏覽:163
機頂盒加密頻道 發布:2025-01-21 04:26:48 瀏覽:318
騰訊應用加密 發布:2025-01-21 04:24:38 瀏覽:988
無法訪問f 發布:2025-01-21 04:24:36 瀏覽:539
sql實時 發布:2025-01-21 04:24:27 瀏覽:998
怎麼在linux伺服器上配ip地址 發布:2025-01-21 04:22:10 瀏覽:251
咖搭姆編程 發布:2025-01-21 04:19:45 瀏覽:674