A. 計算機演算法題求助!給定線性序集中n個元素和一個整數k,1≤k≤n,要求找出這n個元素中第k小的元素。
其實很容易啊
最簡單的辦法
先排序
排序就選用一種排序手段啊
最簡單的冒泡
要快一點用快速排序
再遍歷
遍歷一下這個線性結構就行了
遍歷用循環啊
只需注意兩點
1.循環次數等於線性結構的長度
2.每做一次循環就向後一個元素(如何指向向後一個元素)
數組的話就用循環變數做為索引
鏈表的話就指向下個節點的指針
隊列和堆棧一般不會去取第K個元素
或者你先找出最小的數min
再構建個2層的循環嵌套
里層遍歷這個結構體
從中找出比最小的大的一個元素並覆蓋min的值
外層做k-1次
最後
min就是你想要的
在這里我就不替你寫了
自己想想看
看來樓主的基礎不太好啊
要多編編程
多讀讀別人的代碼才行啊
B. 問一道計算機演算法的題 (10<8)or(10>8) 結果是什麼 答案是true.
108 為真 即1
0 or 1 為 真
C. 這一個比較難得計算機演算法題目,希望大神能用C語言給我編一段,謝謝。
/*
*將環拆成0到n的直線,0和n都表示該苦逼學生,以0為球的出發點
*/
#include<stdio.h>
inta[31][31];//a[i][j]表示球經過j步走到節點i的走法數量
main()
{
intm,n;
scanf("%d%d",&n,&m);
for(inti=0;i<=n;++i)
{
if(i==1)a[i][1]=1;
elsea[i][1]=0;
}
for(intj=2;j<=m;++j)
{
for(inti=0;i<=n;++i)
{
if(i<=1)a[i][j]=a[i+1][j-1];//0,1隻接受從右邊傳來的球
elseif(i>=n-1)a[i][j]=a[i-1][j-1];//n-1,n只接受從左邊傳來的球
elsea[i][j]=a[i-1][j-1]+a[i+1][j-1];//其他情況則把兩種可能性相加
}
}
//只考慮初始從左邊出發的情況(0為出發點),所以最終結果要乘2
printf("%d ",2*(a[0][m]+a[n][m]));
}
D. 求解計算機演算法的題!!!!!
填空1:
設M1的計算速度為x, M2的計算速度為ax,時間是t
則: x * t = 3n1, ax * t = 3n2
則: n1 : n2 = x*t : ax*t = 1 : a
既,填空1的答案是 1:a
填空2:
設M1的計算速度為x, M2的計算速度為ax,時間是t
則: x * t = 3n1², ax * t = 3n2²
則: n1² : n2² = x*t : ax*t = 1 : a
等式兩邊同時求根號,得到n1:n2的答案。
既,填空2的答案是 1:√a
碼子不易,望採納。
E. 距離矢量路由演算法 (計算機網路題
通過B到個點的距離為:(11,6,14,18,12,8),因為B到A的距離為5,C到B的距離為6所以C到A的距離更新為5+6=11,C到B的距離沒變為6,C通過B到C的距離為6+8=14,C通過B到D的距離為6+12=18,C通過B到E距離6+6=12,C通過B到F距離為6+2=8。
通過D到個點的距離為:(19,15,9,3,12,13),通過D到A的距離為3+16=19,通過D到B的距離為3+12=15,通過D到C的距離為6+3=9,通過D到D的距離為3,通過D到E的距離為3+9=12,通過D到F的距離為3+10=13。
通過E到個點的距離為:(12,11,8,14,5,9),通過E到A的距離為5+7=12,通過E到B的距離為5+6=11,通過E到C的距離為5+3=8,通過E到D的距離為5+9=14,通過E到Eden距離為5,通過E到F的距離為9。
取到達每一目的地的最小值(C除外)得到: (11, 6,0,3, 5,8)就得出了新的路由表。輸出的路線輸出線路是: (B,,B, -,D,E, B)。
(5)計算機演算法例題擴展閱讀:
路由演算法的度量標准:
路由演算法使用了許多種不同的度量標准去決定最佳路徑。復雜的路由演算法可能採用多種度量來選擇路由,通過一定的加權運算,將它們合並為單個的復合度量、再填入路由表中,作為尋徑的標准。
通常所使用的度量有:路徑長度、可靠性、時延、帶寬、負載、通信成本等。
路徑長度:
路徑長度是最常用的路由。一些路由協議允許網管給每個網路連接人工賦以代價值,這種情況下,路由長度是所經過各個鏈接的代價總和。
可靠性:
可靠性,在路由演算法中指網路連接的可依賴性(通常以位誤率描述),有些網路連接可能比其它的失效更多,網路失效後,一些網路連接可能比其它的更易或更快修復。
路由延遲:
路由延遲指分組從源通過網路到達目的所花時間。很多因素影響到延遲,包括中間的網路連接的帶寬、經過的每個路由器的埠隊列、所有中間網路連接的擁塞程度以及物理距離。
帶寬
帶寬指連接可用的流通容量。在其它所有條件都相等時,10Mbps的乙太網鏈接比64kbps的專線更可取。雖然帶寬是鏈接可獲得的最大吞吐量,但是通過具有較大帶寬的鏈接做路由不一定比經過較慢鏈接路由更好。
負載:
負載指網路資源,如路由器的繁忙程度。負載可以用很多方面計算,包括CPU使用情況和每秒處理分組數。持續地監視這些參數本身也是很耗費資源的。
通信代價:
通信代價是另一種重要的metric,尤其是有一些公司可能關心運作費用甚於關心性能。即使線路延遲可能較長,他們也寧願通過自己的線路發送數據而不採用昂貴的公用線路。
參考資料來源:網路-路由演算法
F. 計算機演算法題!編程實現5個矩陣A1A2A3A4A5聯乘積
你題目裡面的矩陣有六個 啊 ,而且 5*10,30*20,20*25 不對吧!
我的代碼在下面,你自己改幾個數字吧。 下面標記了
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct matrix{
int row,col,num[40][40];
} a[5];
struct matrix pro(struct matrix a,struct matrix b)
{
struct matrix c;
int i,j,k;
c.row = a.row; c.col = b.col;
memset(c.num,sizeof(c.num),0);
for(i=0;i<c.row;i++)
{
for(j=0;j<c.col;j++)
{
for(k=0;k<a.col;k++)
c.num[i][j] += a.num[i][k] * b.num[k][j];
}
}
return c;
}
void out(struct matrix a)
{
int i,j;
for(i=0;i<a.row;i++)
{
for(j=0;j<a.col;j++)
printf("%5d ",a.num[i][j]);
puts("");
}
}
int main()
{
int i,j,k;
struct matrix ans;
a[0].row = 2; a[0].col = 3; /*設置行和列*/
a[1].row = 3; a[1].col =2;
a[2].row = 15; a[2].col = 5;
a[3].row = 5; a[3].col = 10;
a[4].row = 10; a[4].col = 25; /*這里進行更改就行*/
for(i=0;i<5;i++)
{
printf("please enter matrix %d ( %d * %d ):\n",i+1,a[i].row,a[i].col);
for(j=0;j<a[i].row;j++)
{
for(k=0;k<a[i].col;k++)
scanf("%d",&(a[i].num[j][k]));
}
}
for(i=0;i<4;i++)
{
ans = pro(a[i],a[i+1]);
}
puts("answer matrix is :");
out(ans);
system("pause");
}
G. 《計算機演算法設計與分析第5版習題及答案》pdf下載在線閱讀全文,求百度網盤雲資源
《計算機演算法設計與分析第5版習題及答案》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1oxH2d3SdEUN0rx6LJRNBoA
H. 請舉出日常生活中兩個例子來描述計算機演算法
演算法就是解決問題的方法
比如你要喝茶就要先找到茶葉,燒一壺開水,然後將茶葉放到杯子里,然後將開水倒入杯中,然後等一段時間
再比如你要從a地到b地,中間可能有多種汽車換乘方案,是選速度最快的,還是選最省錢的,
還是平衡的,制定換乘方案就是演算法。