當前位置:首頁 » 操作系統 » c演算法iiv

c演算法iiv

發布時間: 2022-09-07 11:18:43

1. 高分求一個c語言演算法設計方法

#include <stdio.h>
int main(void)
{
unsigned long long A,B,C;
int cnt=0;
scanf("%ld%ld",&A,&B);
C=A^B;//異或運算,不同位置一
do{
cnt+=(int)(C&1); //末位為1計數
C>>=C;//右移一位
}while(C); //全零結束
printf("number of diff bit:%d\n",cnt );
}

2. 二叉樹C語言演算法,急!!!!

清華大學
嚴蔚敏
的<數據結構里>都有完整的代碼,解釋的也很清楚
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
typedef
struct
tree
{
struct
tree
*left;
int
date;
struct
tree
*right;
}treenode,*b_tree;
///////插入節點/////////////////////
b_tree
insert(b_tree
root,int
node)
{
b_tree
newnode;
b_tree
currentnode;
b_tree
parentnode;
newnode=(b_tree)malloc(sizeof(treenode));
newnode->date=node;
newnode->right=NULL;
newnode->left=NULL;
if(root==NULL)
return
newnode;
else
{
currentnode=root;
while(currentnode!=NULL)
{
parentnode=currentnode;
if(currentnode->date>node)
currentnode=currentnode->left;
else
currentnode=currentnode->right;
}
if(parentnode->date>node)
parentnode->left=newnode;
else
parentnode->right=newnode;
}
return
root;
}
//////建立樹///////////////////
b_tree
creat(int
*date,int
len)
{
b_tree
root=NULL;
int
i;
for(i=0;i<len;i++)
root=insert(root,date[i]);
return
root;
}
//////中序列印////////////////
void
print1(b_tree
root)
{if(root!=NULL)
{
print1(root->left);
printf("%d->",root->date);
print1(root->right);
}
}
//////後序列印////////////////
void
print2(b_tree
root)
{if(root!=NULL)
{
print2(root->left);
print2(root->right);
printf("%d->",root->date);
}
}
//////前序列印////////////////
void
print3(b_tree
root)
{if(root!=NULL)
{
printf("%d->",root->date);
print3(root->left);
print3(root->right);
}
}
//////////在二叉樹中查找給定關鍵字
////////////
b_tree
lookfor(b_tree
root,int
e)
{
b_tree
p1,p2;
if(root!=NULL)
{
if(root->date==e)
return
root;
else
p1=lookfor(root->left,e);
p2=lookfor(root->right,e);
if(p1!=NULL)
return
p1;
else
if(p2!=NULL)
return
p2;
else
return
NULL;
}
else
return
NULL;
}
///////測試函數//////////////////
void
main()
{
b_tree
root=NULL;
int
i,index;
int
value;
int
nodelist[20];
cout<<"輸入樹的節點,輸入0結束\n";
index=0;
cin>>value;
while(value!=0)
{
nodelist[index]=value;
index=index+1;
cin>>value;
}
root=creat(nodelist,index);
printf("\n中序列印\n");
print1(root);
printf("\n後序列印\n");
print2(root);
printf("\n前序列印\n");
print3(root);
printf("\n查找的詞:\n");
int
a;
scanf("%d",&a);
b_tree
p3=lookfor(root,a);
if(p3!=NULL)
printf("%d\n",p3->date);
else
printf("沒你要找的詞");
}

3. 【C語言演算法】求最優解

#include<stdio.h>

voidmain()
{
doubleV;
printf_s("請輸入V: ");
scanf_s("%lf",&V);
intm,n,p;
intM,N,P;
doubledelta=10000.0;
for(m=0;m<=16;m++)
{
for(n=0;n<=256;n++)
{
for(p=1;p<=4096;p++)
{
doubled=m*n/(double)p-V;
if(d<0)
d=-d;
if(d<delta)
{
delta=d;
M=m;
N=n;
P=p;
}
}
}
}
printf_s("最優解:M=%d,N=%d,P=%d ",M,N,P);
}

4. 來個c語言演算法大神幫幫忙!

#include<stdio.h>

#include<string.h>

void makeLDR(char DLR[],char LDR[],char LRD[],int n1)

{ int n2;

char *p=strchr(LDR,DLR[0]);

n2=p-LDR; //左子樹節點數

LRD[n1-1]=DLR[0]; //賦後序根節點

if(n2>0)makeLDR(DLR+1,LDR,LRD,n2); //遞歸建立左子樹的後序

if(n1-n2>1)makeLDR(DLR+1+n2,LDR+n2+1,LRD+n2,n1-n2-1); //遞歸建立右子樹的後序

}

int main()

{ int i,n;

char DLR[50],LDR[50],LRD[50],c;

for(i=0,c=' '; c!=' ';) //讀入左子樹序列

scanf("%c%c",&DLR[i++],&c);

for(i=0,c=' '; c!=' ';) //讀入右子樹序列

scanf("%c%c",&LDR[i++],&c);

DLR[n=i]=LDR[i]=LRD[i]='';

makeLDR(DLR,LDR,LRD,n);

printf("後序序列: ");

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

printf("%c%c",LRD[i],i==n-1?' ':',');

return 0;

}

5. C語言演算法的時間復雜度如何計算啊

看看這個
每個循環都和上一層循環的參數有關。
所以要用地推公式:
設i(n)表示第一層循環的i為n時的循環次數,注意到他的下一層循環次數剛好就是n,分別是0,1,2...n-1
所以,把每一層循環設一個函數分別為:j(n),k(n),t(n)
則有
i(n)=j(0)+...+j(n-1)
j(n)=k(0)+...+k(n-1)
k(n)=t(0)+...+t(n-1)
i(0)=j(0)=k(0)=0
t(n)=1
而總循環數是i(0)+i(1)...+i(n-1)
可以根據遞推條件得出准確值
所以演算法復雜度是O(i(0)+i(1)...+i(n-1))
記得採納啊

6. C語言簡單演算法介紹

第一步:p=1,第二步:i=2,第三步:應該是p*i賦值給p,所以p*i=1*2 賦值給p
也就是現在的p=1*2,第四步:把i+1賦值給i,此時i=3,第五步:判斷i是否大於五,沒有返回到第三步:把p*i賦值給p,所以p*i=1*2*3 賦值給p
也就是現在的p=1*2*3,第四步:把i+1賦值給i,此時i=4,第五步:判斷i是否大於五,沒有返回到第三步:把p*i賦值給p,所以p*i=1*2*3*4 賦值給p
也就是現在的p=1*2*3*4,第四步:把i+1賦值給i,此時i=5,第五步:判斷i是否大於五,沒有返回到第三步:把p*i賦值給p,所以p*i=1*2*3*4*5 賦值給p
也就是現在的p=1*2*3*4*5,第四步:把i+1賦值給i,此時i=6,第五步:判斷i是否大於五,有,結束。此時p=1*2*3*4*5=5!
這樣i+1就是為了使得後面的乘3,乘4,乘5做准備的!

7. c語言演算法中的五個特性是什麼

C語言中的演算法是指為解決某個特定問題而採取的確定且有限的步,主要的五個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。

8. c語言常用演算法有哪些

0) 窮舉法
窮舉法簡單粗暴,沒有什麼問題是搞不定的,只要你肯花時間。同時對於小數據量,窮舉法就是最優秀的演算法。就像太祖長拳,簡單,人人都能會,能解決問題,但是與真正的高手過招,就頹了。
1) 貪婪演算法
貪婪演算法可以獲取到問題的局部最優解,不一定能獲取到全局最優解,同時獲取最優解的好壞要看貪婪策略的選擇。特點就是簡單,能獲取到局部最優解。就像打狗棍法,同一套棍法,洪七公和魯有腳的水平就差太多了,因此同樣是貪婪演算法,不同的貪婪策略會導致得到差異非常大的結果。
2) 動態規劃演算法
當最優化問題具有重復子問題和最優子結構的時候,就是動態規劃出場的時候了。動態規劃演算法的核心就是提供了一個memory來緩存重復子問題的結果,避免了遞歸的過程中的大量的重復計算。動態規劃演算法的難點在於怎麼將問題轉化為能夠利用動態規劃演算法來解決。當重復子問題的數目比較小時,動態規劃的效果也會很差。如果問題存在大量的重復子問題的話,那麼動態規劃對於效率的提高是非常恐怖的。就像斗轉星移武功,對手強它也會比較強,對手若,他也會比較弱。
3)分治演算法
分治演算法的邏輯更簡單了,就是一個詞,分而治之。分治演算法就是把一個大的問題分為若干個子問題,然後在子問題繼續向下分,一直到base cases,通過base cases的解決,一步步向上,最終解決最初的大問題。分治演算法是遞歸的典型應用。
4) 回溯演算法
回溯演算法是深度優先策略的典型應用,回溯演算法就是沿著一條路向下走,如果此路不同了,則回溯到上一個
分岔路,在選一條路走,一直這樣遞歸下去,直到遍歷萬所有的路徑。八皇後問題是回溯演算法的一個經典問題,還有一個經典的應用場景就是迷宮問題。
5) 分支限界演算法
回溯演算法是深度優先,那麼分支限界法就是廣度優先的一個經典的例子。回溯法一般來說是遍歷整個解空間,獲取問題的所有解,而分支限界法則是獲取一個解(一般來說要獲取最優解)。

9. c語言演算法

離散數學離散數學作為計算機學科的基礎是競賽中涉及最多的數學分支,重中之重又在於圖論和組合數學,尤其是圖論。圖論之所以運用最多是因為它的變化最多,而且可以輕易地結合基本數據結構和許多演算法的基本思想,較多用到的知識包括連通性判斷、DFS和BFS,關節點和關鍵路徑、歐拉迴路、最小生成樹、最短路徑、二部圖匹配和網路流等等。雖然這部分的比重很大,但是往往也是競賽中的難題所在,如果有初學者對於這部分的某些具體內容暫時感到力不從心,也不必著急,可以慢慢積累。組合數學競賽中設計的組合計數問題大都需要用組合數學來解決,組合數學中的知識相比於圖論要簡單一些,很多知識對於小學上過奧校的同學來說已經十分熟悉,但是也有一些部分需要先對代數結構中的群論有初步了解才能進行學習。組合數學在競賽中很少以難題的形式出現,但是如果積累不夠,任何一道這方面的題目卻都有可能成為難題。數論以素數判斷和同餘為模型構造出來的題目往往需要較多的數論知識來解決,這部分在競賽中的比重並不大,但只要來上一道,也足以使知識不足的人冥思苦想上一陣時間。素數判斷和同餘最常見的是在以密碼學為背景的題目中出現,在運用密碼學常識確定大概的過程之後,核心演算法往往要涉及數論的內容。計算幾何計算幾何相比於其它部分來說是比較獨立的,就是說它和其它的知識點很少有過多的結合,較常用到的部分包括—線段相交的判斷、多邊形面積的計算、內點外點的判斷、凸包等等。計算幾何的題目難度不會很大,但也永遠不會成為最弱的題。線性代數對線性代數的應用都是圍繞矩陣展開的,一些表面上是模擬的題目往往可以藉助於矩陣來找到更好的演算法。 ~

10. c語言演算法有哪些

這里整理c語言常用演算法,主要有:
交換演算法
查找最小值演算法
冒泡排序
選擇排序
插入排序
shell排序 (希爾排序)
歸並排序
快速排序
二分查找演算法
查找重復演算法

熱點內容
日產高配有哪些配置 發布:2025-05-12 10:32:16 瀏覽:474
大眾朗逸哪個配置值得入手 發布:2025-05-12 10:31:20 瀏覽:503
壓縮包的後綴 發布:2025-05-12 10:20:35 瀏覽:939
煙台招聘編程 發布:2025-05-12 10:04:21 瀏覽:52
sql查詢所有表名 發布:2025-05-12 10:01:28 瀏覽:663
用python編譯器的簡單代碼 發布:2025-05-12 09:48:40 瀏覽:357
香港多ip站群伺服器租用 發布:2025-05-12 09:33:16 瀏覽:893
kaliapk編譯 發布:2025-05-12 08:47:56 瀏覽:357
健身穿壓縮衣 發布:2025-05-12 08:44:53 瀏覽:479
vps撥號伺服器搭建 發布:2025-05-12 08:35:20 瀏覽:310