算法设计与分析中第一二章算法的实现Word格式.docx
- 文档编号:7149939
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:18
- 大小:17.16KB
算法设计与分析中第一二章算法的实现Word格式.docx
《算法设计与分析中第一二章算法的实现Word格式.docx》由会员分享,可在线阅读,更多相关《算法设计与分析中第一二章算法的实现Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
白鸡问题
intx,y,z;
intk=1;
intg[100],m[100],s[100];
for(x=0;
x<
=100;
x++)
for(y=0;
y<
y++)
for(z=0;
z<
z++)
{
if((x+y+z==100)&
&
(5*x+3*y+z/3==100)&
(z%3==0))
{
g[k]=x;
m[k]=y;
s[k]=z;
k++;
}
}
for(inti=1;
i<
=k-1;
i++)
cout<
the\t"
\tmeothedis"
gongji"
g[i]<
\tmuji\t"
m[i]<
\txiaoji\t"
s[i]<
system("
3.算法1.3:
改进的百鸡问题
intx,y,z,i,j;
i=100/5;
j=100/3;
=i;
=j;
z=100-x-y;
if((5*x+3*y+z/3==100)&
4.算法2.1:
计算多项式
floatf(floata[],intn,floatx)
inti;
floatsum=0;
for(i=n-1;
i>
=0;
i--)
sum=sum*x+a[i];
returnsum;
intn;
floata[]={2,1,4.5,6,7,8,1.3,6};
n=sizeof(a)/sizeof(a[0]);
floatx;
inputx"
x;
floats=f(a,n,x);
函数值是:
s<
6算法2.2:
冒泡排序算法
#definetypeint
voidswap(type&
x,type&
y)
typet;
t=x;
x=y;
y=t;
voidbubble(typea[],intn)
inti,j;
for(j=0;
j<
i;
j++)
{
if(a[j]>
a[j+1])
swap(a[j],a[j+1]);
}
typea[]={2,4,1,7,3,9,6,5,8};
intn=sizeof(a)/sizeof(a[0]);
bubble(a,n);
for(i=0;
cout<
a[i]<
7.算法2.3:
竞技淘汰赛
voidgame(inta[],intn)
//intn=16;
//sizeof(a)/sizeof(a[0]);
/*可根据人数的不同进行调整?
*/
inti=0,j,k=0,l=1,t;
//intb[5];
for(t=1;
t<
=4;
t++)
{
//for(i=0;
=n;
do
第Ì
¨
²
l<
局赢的人是"
还是"
a[i+1]<
cin>
j;
//newb[l];
if(a[i]==j)
a[k++]=a[i];
else
a[k++]=a[i+1];
i=i+2;
l++;
}while(i<
n);
i=0;
k=0;
n=n/2;
}
inta[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
game(a,n);
//for(inti=0;
=8;
最终的赢家是"
a[0]<
号选手"
8.算法2.4:
洗牌
voidswap(int&
x,int&
intt;
t=x;
x=y;
y=t;
voidsh(inta[],intn)
inti,j,k,m;
//random_seed(0);
for(k=1;
k<
k++)
m=n/k;
for(i=1;
=m;
j=rand()%n+1;
swap(a[i],a[j]);
inta[54];
intn=54;
inti;
for(i=1;
=54;
a[i]=i;
sh(a,n);
\t"
9.算法2.5:
合并两个有序子数组
intt=x;
voidbubble(inta[],intp,intq)
for(i=q-p+1;
0;
for(j=p;
q-1;
voidmerge(inta[],intp,intq,intr,intn)
inti,j,k;
int*pb=newint[r-p+1];
i=p;
j=q+1;
while(i<
=q&
=r)
if(a[i]<
a[j])
pb[k++]=a[i++];
pb[k++]=a[j++];
if(i==q+1)
for(;
=r;
pb[k++]=a[j];
else
=q;
pb[k++]=a[i];
k=0;
for(i=p;
a[i]=pb[k++];
deletepb;
inta[]={13,6,9,12,5,7,8,4,3,18,1,11,15,17,2,21};
intp=1,q=5,r=12;
bubble(a,p,q);
bubble(a,q+1,r);
merge(a,p,q,r,n);
for(inti=0;
排序后的数组是"
for(inti=p;
10.算法2.6:
收割白菜
voidreap(inta[],intn)
inti,j,k,s,t;
int*A=newint[n];
j=0;
k=3;
s=n;
A[i]=i+1;
while(j<
n)
t=s;
s=0;
for(i=0;
t;
if(--k!
=0)
A[s++]=A[i];
else
{a[j++]=A[i];
k=3;
deleteA;
intmain()
inta[]={1,2,3,4,5,6,7,8,9,10,11,12};
intn=12;
reap(a,n);
11.算法2.7:
用插入法按递增顺序排序数组A[]
voidsort(inta[],intn)
j=i-1;
k=a[i];
while(j>
=0&
a[j]>
k)
{a[j+1]=a[j];
j--;
a[j+1]=k;
//for(inti=0;
//cout<
inta[]={3,9,1,2,4,8,5,7,6};
sort(a,n);
12.算法2.8:
线性检索算法
intjiansuo(inta[],intn,intx)
if(a[i]==x)
returni;
if(i==n)
return-1;
inta[]={1,2,3,4,5,6,7,8,9,0};
intx;
inputthenumberofx:
intt=jiansuo(a,n,x);
if(t!
=-1)
x在a数组中的位置是"
x不在a数组中"
13.算法2.9:
二叉检索法
intj(inta[],intn,intx)
intl=0,h=n-1,m,j=-1;
if(h-l>
0)
{m=(l+h)/2;
if(x==a[m])
j=m;
if(x<
a[m])
h=m-1;
l=m+1;
returnj;
inta[]={1,2,3,4,5,6,7,8,9,10};
请输入要检索的数:
intt=j(a,n,x);
if(t>
x在数组a中且他的位置是:
x不在数组A中"
14.算法2.11:
改进的冒泡排序
voidbubble(inta[],intn)
inti,k,f;
k=n-1;
f=1;
while(f)
k=k-1;
f=0;
=k;
if(a[i]>
a[i+1])
{swap(a[i],a[i+1]);
f=1;
inta[]={1,3,5,2,13,7,8,15};
15.算法2.12:
汉诺塔问题
voidhanoi(chara,charb,charc,intn)
if(n==1)
a<
->
c<
hanoi(a,c,b,n-1);
hanoi(b,a,c,n-1);
//cout<
b<
chara='
x'
b='
y'
c='
z'
输输入个数n:
hanoi(a,b,c,n);
16.算法2.13:
斐波那契数列
intf(intn)
if(n==1|n==2)
return1;
else
returnf(n-1)+f(n-2);
输入年份"
到第"
n<
年有"
f(n)<
只兔子"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 分析 第一 实现