當前位置:首頁 » 編程語言 » 演算法c語言實現

演算法c語言實現

發布時間: 2022-01-15 14:54:14

❶ 關於演算法編程題(c語言實現)

char *a; //字元串 改為 char a[20];//存放字元串的字元數組
int jie; //方程的解 改為 double jie;
dy = 0; 刪去 dy=0;
兩處的 for(i=1;i<=z;i++) 都改為 for(i = 0; i < z; i++)
if (a[i] == '==' ) 改為 if (a[i] == '=' )
{z=i; 改為 {dy = i;
a=0;b=0; 刪去 a=0;b=0;
fun(a,1,dy,&b,&c); 改為 fun(a, 0, dy - 1, &b, &c);
fun(a,dy,z,&b,&c); 改為 fun(a, dy + 1, z - 1, &b, &c);
jie=(d-b)/(e-c); 改為 jie=((double)(d-b))/(e-c);
printf("%c = %d",zm,jie); 改為 printf("%c = %f",zm,jie);

❷ c語言編寫程序 實現一個演算法

#include<iostream>
usingnamespacestd;
typedefstructNode
{
structNode*rChild;
structNode*lChild;
}Node;
boolisTheSame(Node*treeA,Node*treeB)
{
if(treeA==NULL||treeB==NULL)
returntreeA==treeB;
returnisTheSame(treeA->lChild,treeB->lChild)
&&isTheSame(treeA->rChild,treeB->rChild);
}
intmain()
{
Node*A=aNewTree();
Node*B=anotherNewTree();

if(isTheSame(A,B))
cout<<"A,B兩樹等價"<<endl;
else
cout<<"A,B兩樹不等價"<<endl;

return0;
}

isTheSame就是判斷兩樹是否等價的函數,aNewTree和anotherNewTree是生成兩個樹的函數,這里我沒有具體實現,你根據具體實現改吧

❸ 做一個RSA的演算法,C語言實現的~!編程高手進啊~!救命啊~!

看你催就倉促寫了個,自我感覺寫的不是很好,但是能用了。數據只能是大寫字母組成的字元串。
加密的時候,輸入Y,然後輸入要加密的文本(大寫字母)
解密的時候,輸入N,然後輸入一個整數n表示密文的個數,然後n個整數表示加密時候得到的密文。
/*RSA
algorithm
*/
#include
<stdio.h>
#include
<string.h>
#include
<stdlib.h>
#define
MM
7081
#define
KK
1789
#define
PHIM
6912
#define
PP
85
typedef
char
strtype[10000];
int
len;
long
nume[10000];
int
change[126];
char
antichange[37];
void
initialize()
{
int
i;
char
c;
for
(i
=
11,
c
=
'A';
c
<=
'Z';
c
++,
i
++)
{
change[c]
=
i;
antichange[i]
=
c;
}
}
void
changetonum(strtype
str)
{
int
l
=
strlen(str),
i;
len
=
0;
memset(nume,
0,
sizeof(nume));
for
(i
=
0;
i
<
l;
i
++)
{
nume[len]
=
nume[len]
*
100
+
change[str[i]];
if
(i
%
2
==
1)
len
++;
}
if
(i
%
2
!=
0)
len
++;
}
long
binamod(long
numb,
long
k)
{
if
(k
==
0)
return
1;
long
curr
=
binamod
(numb,
k
/
2);
if
(k
%
2
==
0)
return
curr
*
curr
%
MM;
else
return
(curr
*
curr)
%
MM
*
numb
%
MM;
}
long
encode(long
numb)
{
return
binamod(numb,
KK);
}
long
decode(long
numb)
{
return
binamod(numb,
PP);
}
main()
{
strtype
str;
int
i,
a1,
a2;
long
curr;
initialize();
puts("Input
'Y'
if
encoding,
otherwise
input
'N':");
gets(str);
if
(str[0]
==
'Y')
{
gets(str);
changetonum(str);
printf("encoded:
");
for
(i
=
0;
i
<
len;
i
++)
{
if
(i)
putchar('-');
printf("
%ld
",
encode(nume[i]));
}
putchar('\n');
}
else
{
scanf("%d",
&len);
for
(i
=
0;
i
<
len;
i
++)
{
scanf("%ld",
&curr);
curr
=
decode(curr);
a1
=
curr
/
100;
a2
=
curr
%
100;
printf("decoded:
");
if
(a1
!=
0)
putchar(antichange[a1]);
if
(a2
!=
0)
putchar(antichange[a2]);
}
putchar('\n');
}
putchar('\n');
system("PAUSE");
return
0;
}
測試:
輸入:
Y
FERMAT
輸出:
encoded:
5192
-
2604
-
4222
輸入
N
3
5192
2604
4222
輸出
decoded:
FERMAT

❹ 用c語言編寫一演算法

單鏈表建一個表頭,指向第一個node,建一個表尾,next域指向NULL。每次新建node,把數據順序填入,每次一個,然後從表頭到表尾開始查找鏈表數據作比較,找到前面的一個小、後面一個大的位置,小的next指向這個新的node,新node的next指向大的node。如果都比新的大,就加入表頭node,如果都比新的小,就加入表尾node。數據填完結束。

❺ 演算法編程:用c語言實現

解決這類問題可以使用 回溯 演算法,代碼如下:

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

#defineM6//候選數字個數
#defineN5//組合後數字位數

intcheck(intresult[],inti)
{
for(intj=0;j<N;j++)
if(result[j]==i)
return0;

return1;
}

intlist(intnumbers[],intl,intresult[],intcount)
{
if(l>=N){

//將各位數組合成一個數
intnum=0;
for(inti=0;i<N;i++){
num=num*10+numbers[result[i]];
}

//判斷這個數是否能被75整除
if(num%75==0){
printf("%d ",num);
count++;
}

returncount;
}

for(inti=0;i<M;i++){

if(!check(result,i)){
continue;
}

result[l]=i;

count=list(numbers,l+1,result,count);

result[l]=-1;
}

returncount;
}

intmain()
{
intnumbers[M]={1,2,5,7,8,9};
intresult[N]={-1,-1,-1,-1,-1};

intcount=list(numbers,0,result,0);

printf("共有%d個 ",count);

system("pause");
return0;
}

運行結果:

❻ aes演算法c語言實現

http://wenku..com/link?url=__-4vlYsYV62kNnt7l9SF3 這里很多,如果不是專門弄這個的很少會去研究的。

專門弄這個的人自己的代碼很少給出來的。。

❼ 求Dijkstra演算法的C語言實現

//Dijkstra演算法 C語言實現 2008-08-26 12:07 #include<stdio.h>
#include<stdlib.h> #define INFINITY 1000000000 //最大距離
#define MAX_NODES 1024 //最大節點數
int n,dist[MAX_NODES][MAX_NODES]; //dist[i][j]表示從 i 到 j 的距離 void shortest_path(int s, int t, int path[])
{
struct state
{
int predecessor; //前驅節點
int length; //到起始點的距離
enum {permanent, tentative} label;
}state[MAX_NODES];
int i,k,min;
struct state * p;
for(p=&state[0]; p<&state[n]; p++)
{
p->predecessor = -1;
p->length = INFINITY;
p->label = tentative;
}
state[t].length = 0;
state[t].label = permanent;

k = t; //k 是當前工作節點
do
{
for(i=0; i<n; i++)
{
if(dist[k][i]!=0 && state[i].label==tentative)
{
if(state[k].length+dist[k][i]<state[i].length)
{
state[i].length = state[k].length+dist[k][i];
state[i].predecessor = k;
}
}
}

k=0;
min=INFINITY;
for(i=0; i<n; i++)
{
if(state[i].label==tentative && state[i].length<min)
{
k=i;
min=state[i].length;
}
}
state[k].label = permanent;
}while(k!=s);

i=0;
k=s;
do
{
path[i++] = k;
k = state[k].predecessor;
}while(k>=0);
}

❽ 設計演算法,並用c語言實現。

#include<stdio.h>

intchange(intamount,intindex,intconstcoins[]){
if(amount==0)return1;
if(index<=0)return0;
for(inti=amount/coins[index-1];i>=0;--i){
if(change(amount-i*coins[index-1],index-1,coins)){
if(i)
printf("%d*%d",i,coins[index-1]);
return1;
}
}
return0;
}

intmain()
{
intcoins[]={20,50};
intconstsize=sizeof(coins)/sizeof(int);
intamount;
for(inti=0;i<size;++i){
for(intj=i+1;j<size;++j){
if(coins[i]>coins[j]){
inttemporary=coins[i];
coins[i]=coins[j];
coins[j]=temporary;
}
}
}
if(coins[0]<=0){
printf("數據有誤,零錢必須大於0 ");
return-1;
}
printf("請輸入要兌換的貨幣金額:");
scanf("%d",&amount);
if(change(amount,size,coins))
printf(" 兌換成功 ");
elseprintf(" 兌換失敗 ");
return0;
}

❾ 求 演算法:C語言實現 的PDF

C 演算法、數據、指針等書籍PDF。

  • 鏈接:https://pan..com/s/1VcBvSpXCThxrPDEZtD_9mw

  • 密碼:mnep

❿ 求二叉樹遍歷演算法C語言實現的

Status
PreOrderTraverse
(
BiTree
T,
Status
(
*Visit
)
(
TElemType
e
)
)
{
//
採用二叉鏈表存儲結構,Visit
是對數據元素操作的應用函數,先序遍歷二叉樹
T
的遞歸演算法。
if
(
T
)
{
//

T
不為空
if
(
Visit
(
T->data
)
)
//
調用函數
Visit
if
(
PreOrderTraverse
(
T->lchild,
Visit
)
)
//
遞歸調用左子樹
if
(
PreOrderTraverse
(
T->rchild,
Visit
)
)
return
OK;
//
遞歸調用右子樹
return
ERROR;
}
else
return
OK;
}
//
PreOrderTraverse

熱點內容
無許可權訪問工作組的計算機 發布:2024-09-21 04:26:31 瀏覽:475
為什麼ipad需要密碼解鎖 發布:2024-09-21 04:06:22 瀏覽:210
mariadb存儲過程 發布:2024-09-21 03:56:05 瀏覽:514
壓縮殼脫殼機 發布:2024-09-21 03:14:33 瀏覽:93
熱血街籃為什麼是伺服器維護中 發布:2024-09-21 03:08:19 瀏覽:937
喇叭怎麼配置功放 發布:2024-09-21 03:06:50 瀏覽:751
為什麼安卓的內存沒有蘋果的內存 發布:2024-09-21 03:06:50 瀏覽:231
swift解壓 發布:2024-09-21 02:31:47 瀏覽:705
移動中心怎麼配置安卓系統 發布:2024-09-21 02:27:16 瀏覽:607
安卓手機舊版app怎麼下載 發布:2024-09-21 02:12:35 瀏覽:799