导航:首页 > 源码编译 > 怎么用c语言写算法

怎么用c语言写算法

发布时间:2022-12-12 02:10:02

㈠ 用c语言写算法

直接手写

size_t lenT, lenP, lenS;
char *e;
if ( !T || !P || !S ) return;
e = strstr( T, P );

if ( !e ) return;
lenT = strlen( T );
lenP = strlen( P );
lenS = strlen( S );
memmove( e+lenS, e+lenP, lenT+1-(e-T)-lenP );
memcpy( e, s, lenS );

假定三个长度 t、p、s 。
strstr: O(t*p)
strlen*3: O(t+p+s)
memmove: O(t-p)
memcpy:O(s)
最终复杂度 O(t*p+2(t+s)) -> O(n^2)。
可以看出热点在 strstr 函数。
如果将其通过 kmp 或类似的匹配算法优化成 O(n) 的,那么复杂度可以直接降为 O(n) 。

㈡ 用c语言怎么实现数据结构算法

c语言主要通过自己定义函数来实现数据结构,比如实现堆栈,实现了先输入后输出,用函数来实现各个接口;
但是C++也可以通过这个办法,来实现数据结构,
还有很简单,就是STL 框架,这个是系统自动定义的函数。用起来容易

㈢ 算法编程:用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;
}

运行结果:

㈣ 怎样用C语言编写数学公式

1、C语言有现场的常用数学函数,所在函数库为math.h、stdlib.h。

函数名及解释:
int abs(int i) 返回整型参数i的绝对值
double cabs(struct complex znum) 返回复数znum的绝对值
double fabs(double x) 返回双精度参数x的绝对值
long labs(long n) 返回长整型参数n的绝对值
double exp(double x) 返回指数函数ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中
double ldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回+√x的值
double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度
double atan(double x) 返回x的反正切tan-1(x)值,x为弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度
double cos(double x) 返回x的余弦cos(x)值,x为弧度
double sin(double x) 返回x的正弦sin(x)值,x为弧度
double tan(double x) 返回x的正切tan(x)值,x为弧度
double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度
double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度
double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度
double hypot(double x,double y) 返回直角三角形斜边的长度(z),x和y为直角边的长度,z2=x2+y2


2、复杂的数学函数可以用自定义函数的形式实现。

例如:

doubleConerVelocity(intA,doublex1,doubley1,doublex2,doubley2,doublet1,doublet2)
{
doubleT,V;
T=acos(abs(x1*x2+y1*y2)/sqrt(x1*x1+y1*y1)/sqrt(x2*x2+y2*y2));
V=(A*(t2-t1))/(2*sin(T/2));
returnV;
}
阅读全文

与怎么用c语言写算法相关的资料

热点内容
centos复制命令 浏览:286
30岁的运维学python 浏览:985
ospfpdf 浏览:712
安卓耳机声音小怎么设置 浏览:196
程序员升级win11后 浏览:594
云服务器怎么调出控制面板 浏览:171
python正则表达式函数 浏览:632
把自己公司的源码给别人 浏览:436
典韦真的要出程序员皮肤吗 浏览:680
程序员如何转行做电脑维修 浏览:395
4mz算法 浏览:831
程序员全部穿格子图片 浏览:921
申通取件加密 浏览:817
颜色改变命令 浏览:679
海口童程童美学编程怎么样 浏览:694
vb编程未找到方法 浏览:239
三国战记命令 浏览:922
程序员穿运动鞋 浏览:505
自来水公司需要电脑编程 浏览:309
金融app如何从银行卡扣款 浏览:556