最新太原理工大学算法实验报告Word文件下载.docx
《最新太原理工大学算法实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《最新太原理工大学算法实验报告Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
usingnamespacestd;
template<
typenameT>
voidmergeSort(Tarr[],intn)
{_mergeSort(arr,0,n-1);
}
void__mergeSort(Tarr[],intl,intr)
{
if(l>
=r)
return;
intmid=(l+r)/2;
__mergeSort(arr,l,mid);
__mergeSort(arr,mid+1,r);
if(arr[mid]>
arr[mid+1])
__merge(arr,l,mid,r);
void__merge(Tarr[],intl,intmid,intr)
T*aux=newT[r-l+1];
for(inti=l;
i<
=r;
i++)
aux[i-l]=arr[i];
inti=l,j=mid+1;
for(intk=l;
k<
k++)
{
if(i>
mid)
{
arr[k]=aux[j-l];
j++;
}
elseif(j>
r)
arr[k]=aux[i-l];
i++;
elseif(aux[i-l]<
aux[j-l])
else{
}
delete[]aux;
int_tmain(intargc,_TCHAR*argv[])
intn=10;
int*arr=SortTestHelper:
:
generateRandomArray(n,0,n);
cout<
<
"
未排序的数组为:
;
for(intj=0;
j<
10;
j++)
cout<
arr[j]<
"
endl;
mergeSort(arr,10);
经过排序的数组为:
for(inti=0;
9;
arr[i]<
ctime>
namespaceSortTestHelper{
int*generateRandomArray(intn,intrandL,intrandR)
assert(randL<
=randR);
int*arr=newint[n];
n;
arr[i]=rand()%(randR-randL+1)+randL;
returnarr;
五、实验结果截图
六、实验总结
一定要先找到递归函数式后,设计递归程序
实验二贪心法多机调度
一、实验目的
1.掌握贪心算法的基本思想
2.掌握贪心算法的典型问题求解
3.进一步多机调度的基本思想和算法设计方法
4.学会用贪心法分析和解决实际问题
二、实验内容
设计贪心算法实现作业调度,要求按作业调度顺序输出作业序列。
如已知n=8,效益p=(35,
30,
25,
20,
15,
10,
5,
1),时间期限
d=(4,
2,
4,
6,
7),求该条件下的最大效益。
三、实验环境
四、方法描述和程序代码
iostream"
doublework[99],time[99],t,w;
doubletemp[99],usetemp[99],a,s=0;
intA[99];
cout<
作业数为(x<
99):
cin>
>
w;
作业收益为:
i++){cin>
work[i];
作业收益:
i++){cout<
work[i]<
每个作业的时限为:
time[i];
作业时限:
time[i]<
总作业时限为:
t;
//初始化录入数据
i++){temp[i]=work[i]/time[i];
usetemp[i]=temp[i];
}//平均时间盈利
作业平均时间盈利排序为:
for(intm=0;
m<
m++){
a=temp[0],A[m]=0;
if(a<
temp[i]){
A[m]=i;
a=temp[i];
temp[A[m]]=0;
A[m]<
}//作业平均时间盈利排序
可进行的作业有:
i++){
doublex=s+time[A[i]];
if(x<
t){
s=s+time[A[i]];
A[i]<
}}
贪心算法设计的关键是贪心策略的选择。
实验三动态规划法求多段图问题
1.掌握动态规划算法的基本思想
2.掌握多段图的动态规划算法
3.选择邻接表或邻接矩阵方式来存储图
4.分析算法求解的复杂度。
设G=(V,E)是一个带权有向图,其顶点的集合V被划分成k>
2个不相交的子集Vi,1<
=k,其中V1和Vk分别只有一个顶点s(源)和一个顶点t(汇)。
图中所有边的始点和终点都在相邻的两个子集Vi和Vi+1中。
求一条s到t的最短路线。
参考讲义p136图5-24中的多段图,试选择使用向前递推算法或向后递推算法求解多段图问题。
microsoftvisualstudio2013
四、算法描述和程序代码
#defineINFTY1000
structT{
intadjVex;
intw;
structT*nextArc;
};
classGraph{
private:
T**a;
int*p;
intn;
public:
Graph(intn){this->
n=n;
p=newint[n];
a=newT*[n];
for(inti=0;
i<
n;
i++)a[i]=newT;
voidGetT(int**m);
intfp(intk);
voidprint(intk);
voidGraph:
print(intk){
intc=fp(k);
cout<
最短路径权值:
<
c<
endl;
最短路径:
k-1;
i++)
cout<
p[i]<
-->
p[i+1]<
intGraph:
fp(intk){
intc,*cost=newint[n];
intq,*d=newint[n];
cost[n-1]=0;
d[n-1]=-1;
for(intj=n-2;
j>
=0;
j--){
intmin=INFTY;
for(T*r=a[j]->
nextArc;
r;
r=r->
nextArc){
intv=r->
adjVex;
if(r->
w+cost[v]<
min){
min=r->
w+cost[v];
q=v;
}
cost[j]=min;
d[j]=q;
p[0]=0;
p[k-1]=n-1;
c=cost[0];
for(intj=1;
j<
=k-2;
j++)
p[j]=d[p[j-1]];
delete[]cost;
delete[]d;
returnc;
GetT(int**m){
T*x,*p,*q;
i++){
p=q=a[i];
for(intj=0;
j++){
if(m[i][j]!
=0){
x=newT;
x->
adjVex=j;
w=m[i][j];
p->
nextArc=x;
p=p->
p->
nextArc=NULL;
int**m;
Graphq(12);
m=newint*[12];
12;
m[i]=newint[12];
图的各点见的权值为:
12;
for(intj=0;
cin>
m[i][j];
q.GetT(m);
intk;
到第几个结点的最短路径:
cin>
k;
q.print(k);
delete[]m[i];
deletem;
return0;
五、实验结果截图
六、实验总结
动态规划法应用于子问题重叠的情况,与分治法类似。
实验四回溯法求n皇后问题
掌握回溯算法的基本思想
通过n皇后问题求解熟悉回溯法
使用蒙特卡洛方法分析算法的复杂度
要求在一个8*8的棋盘上放置8个皇后,使得它们彼此不受“攻击”。
两个皇后位于棋盘上的同一行、同一列或同一对角线上,则称它们在互相攻击。
现在要找出使得棋盘上8个皇后互不攻击的布局。
#include"
#include<
stdlib.h>
#defineN4
intcolumn[N+1];
intrup[2*N+1];
intlup[2*N+1];
intqueen[N+1]={0};
intnum;
//解答编号确定
voidbacktrack(int);
int_tmain(intargc,_TCHAR*argv[]){
inti;
num=0;
for(i=1;
=N;
column[i]=1;
=2*N;
rup[i]=lup[i]=1;
backtrack
(1);
}//递回求解
voidshowAnswer(){
intx,y;
printf("
\n解答%d\n"
++num);
for(y=1;
y<
y++){
for(x=1;
x<
x++){
if(queen[y]==x){
Q"
);
else{
."
\n"
}//GUI显示
voidbacktrack(inti){
intj;
if(i>
N){
showAnswer();
for(j=1;
j++){
if(column[j]==1&
&
rup[i+j]==1&
lup[i-j+N]==1)
{
queen[i]=j;
1、DIY手工艺市场状况分析column[j]=rup[i+j]=lup[i-j+N]=0;
backtrack(i+1);
column[j]=rup[i+j]=lup[i-j+N]=1;
//其他位置改
当然,在竞争日益激烈的现代社会中,创业是件相当困难的事。
我们认为,在实行我们的创业计划之前,我们首先要了解竞争对手,吸取别人的经验教训,制订相应竞争的策略。
我相信只要我们的小店有自己独到的风格,价格优惠,服务热情周到,就一定能取得大多女孩的信任和喜爱。
尽管售价不菲,但仍没挡住喜欢它的人来来往往。
这里有营业员们向顾客们示范着制作各种风格迥异的饰品,许多顾客也是学得不亦乐乎。
在现场,有上班族在里面精挑细选成品,有细心的小女孩在仔细盘算着用料和价钱,准备自己制作的原料。
可以想见,用本来稀奇的原料,加上别具匠心的制作,每一款成品都必是独一无二的。
而这也许正是自己制造所能带来最大的快乐吧。
beadorks公司成功地创造了这样一种气氛:
商店和顾客不再是单纯的买卖关系,营业员只是起着参谋的作用,顾客成为商品或者说是作品的作参与者,营业员和顾客互相交流切磋,成为一个共同的创作体}
、DIY手工艺市场现状分析
PS:
消费者分析
(三)大学生购买消费DIY手工艺品的特点分析
Beadwrks公司还组织各国的“芝自制饰品店”定期进行作品交流,体现东方女性聪慧的作品曾在其他国家大受欢迎;
同样,自各国作品也曾无数次启发过中国姑娘们的灵感,这里更是创作的源泉。
图1-5购物是对消费环境的要求分布回溯法是比贪心算法与动态规划法更一般的方法。