算法设计与分析基础第一章部分课后题答案

算法设计与分析基础第一章部分课后题答案(曲师大)

Exercise 1.1
8.购机里的算法采用重复应用gcd(m,n)直到m mod n=0,对于任何0<n<m,gcd(m,n)=gcd(n,m)且只会出现一次。
12.代码如下:
#include
using namespace std;
int main(int argc, char** argv)
{
int n;
int kai=0;
int guan=0;
cin>>n;
int door[n];
for(int i=0;i<n;i++)
{
door[i]=1;//1代表门关着
}
for(int k=1;k<=n;k++)//第k次走门
{
for(int j=1;j<=n;j++)//第j个门
{
if(j%k==0)
{
door[j-1]=-door[j-1];
}
}
}
cout<<“输入门数:”<<n<<endl;
cout<<“开门号:”;
for(int i=0;i<n;i++)
{
if(door[i]<0)
{
kai++;
cout<<i+1<<" ";
}
else
{
guan++;
}

} 
cout<<endl;
cout<<"开门数:"<<kai<<endl;
cout<<"关门数:"<<guan<<endl; 
return 0;

}
运行结果

Exercise 1.2
1.
左岸 右岸
狼、羊、白菜、农夫
狼、白菜 农夫、羊
狼、白菜、农夫 羊
白菜 狼、羊、农夫
白菜、羊、农夫 狼
羊 白菜、农夫、狼
农夫、羊 白菜、狼
农夫、羊、白菜、狼
2.假设甲过桥1分钟,乙过桥2分钟,丙过桥5分钟,丁过桥10分钟。
桥头 去 回 桥尾 用时
甲乙丙丁
丙丁 甲乙 甲乙 2
丙丁甲 甲 乙 1
甲 丙丁 乙丙丁 10
甲乙 乙 丙丁 2
甲乙 甲乙丙丁 2
共用时17分钟。
4.代码如下:
#include
#include<math.h>
using namespace std;
void function(double a,double b,double c)
{
if(a!=0)
{
double d=bb-4ac;
if(d<0)
{
cout<<“此方程没有解”<<endl;
}
else
{
double x1=(-b+pow(d,0.5))/(2
a);
double x2=(-b-pow(d,0.5))/(2*a);
cout<<“x1=”<<x1<<",x2="<<x2<<endl;
}
}
else if(a==0)
{
double x=-c/b;
cout<<x<<endl;
}
}
int main()
{
double a,b,c;
cin>>a>>b>>c;
function(a,b,c);
return 0;
}

运行结果:

Exercise 1.3

  1. 代码如下:
    #include
    #include<math.h>
    using namespace std;

int main(int argc, char** argv)
{
int n=6;
int A[6],B[6],C[6];
for(int i=0;i<6;i++)
{
cin>>A[i];
}
for(int i=0;i<6;i++)
{
B[i]=0;
}
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(A[i]<A[j])
{
B[j]=B[j]+1;
}
else
{
B[i]=B[i]+1;
}
}
}
for(int i=0;i<n;i++)
{
C[B[i]]=A[i];
}
for(int i=0;i<n;i++)
{
cout<<C[i]<<" ";
}
return 0;
}
运行结果:

不稳定,不在位,B和C都是额外的空间。
4. 除了起点以外,每一次当一个人由一座桥进入一块陆地(或点)时,他(或她)同时也由另一座桥离开此点。所以每行经一点时,计算两座桥(或线),从起点离开的线与最后回到始点的线亦计算两座桥,因此每一个陆地与其他陆地连接的桥数必为偶数。如果需要走遍所有桥只需增加一座桥即可,如果还需要回到起点那么需要增加两座桥。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值