手机版

ACM常用算法(8)

发布时间:2021-06-06   来源:未知    
字号:

ACM常考算法

void m_of_n(int m,int n1,int m1,int* a,int head) {

int i,t;

if(m1<0 || m1>n1)return; if(m1==n1) {

for(i=0;i<m;i++) cout<<a[i]<<' '; // 输出序列 cout<<'\n'; return; }

m_of_n(m,n1-1,m1,a,head); // 递归调用

t=a[head];a[head]=a[n1-1+head];a[n1-1+head]=t; m_of_n(m,n1-1,m1-1,a,head+1); // 再次递归调用 t=a[head];a[head]=a[n1-1+head];a[n1-1+head]=t; }

9.快速傅立叶变换(FFT)

语法:kkfft(double pr[],double pi[],int n,int k,double fr[],double fi[],int l,int il); 参数:

pr[n]: 输入的实部 pi[n]: 数入的虚部 n,k: 满足n=2^k fr[n]: 输出的实部 fi[n]: 输出的虚部

l: 逻辑开关,0 FFT,1 ifFT

il: 逻辑开关,0 输出按实部/虚部;1 输出按模/幅角 返回

null 值: 注意: 源程序:

需要 math.h

void kkfft(pr,pi,n,k,fr,fi,l,il)int n,k,l,il;double pr[],pi[],fr[],fi[]; {

int it,m,is,i,j,nv,l0;

double p,q,s,vr,vi,poddr,poddi; for (it=0; it<=n-1; it++) {

m=it; is=0;

for (i=0; i<=k-1; i++)

{j=m/2; is=2*is+(m-2*j); m=j;} fr[it]=pr[is]; fi[it]=pi[is]; }

pr[0]=1.0; pi[0]=0.0; p=6.283185306/(1.0*n);

pr[1]=cos(p); pi[1]=-sin(p);

ACM常用算法(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)