版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5-A中的最大整数。n 个整数的和。n#include class RecurveArray publicRecurveArray/MaxSize=10 ) ArraySize(MaxSize),5-A中的最大整数。n 个整数的和。n#include class RecurveArray publicRecurveArray/MaxSize=10 ) ArraySize(MaxSize),Elements(RecurveArray() delete Elements;MaxSize)void/MaxKeySumn n /和 n /voidRecurveArray: InputArray( /c
2、outInputthenumberofArray: fori =0;iRecurveArray:MaxKeyn )/if(n=1)returnElements0; temp = MaxKey ( n -1 );if(Elementsn-1 temp)returnElementsn-elsereturnRecurveArray: Sumn ) /if(n=1) returnelsereturnElementsn-1+Sum(n-floatRecurveArray:Averagen ) /if(n =1) return(float)elsereturn(float)Elementsn-1 +(n-
3、1)*elsereturn(float)Elementsn-1 +(n-1)*Average(n -1)/mainsize=-argc, char*argv)coutNo.oftheElements:; while ( size size; RecurveArray ra ( size ); coutnThemaxis: ra.MaxKey(ra.MaxSize)endl; cout nThe sum is: ra.Sum ( ra.MaxSize ) endl; cout nthe avr is: ra.Average ( ra.MaxSize ) 0, n =/ m0, n (2) 为了将
4、递归算法改成非递归算法,首先改写原来的递归算法,将递归语句从unsignedakm( unsignedm,unsignedn) unsignedif(m=0 ) returnif(n=0)returnakm(m-1,1); v = akm ( m, n-1 ) );returnakm( m-1,v/m=/ m0, n / m0, n :akm=v =akm=v=akm=v=v=v=vm vm vm akm(m-akm(m-v=n+1= v = n+1 = 3akm(m-vm vm vm akm(m-v=n+1 =akm(m-1,v) akm(m-1,v) akm(m-栈空, vv=n+1 =v
5、=n+1 =v=n+1 =#include #include “stack.h” #definemaxSize3500;unsignedakm(unsignedm,unsignedn) struct node unsigned vm, vn; stackst(maxSize); akm=v =akm=v=akm=v=v=v=vm vm vm akm(m-akm(m-v=n+1= v = n+1 = 3akm(m-vm vm vm akm(m-v=n+1 =akm(m-1,v) akm(m-1,v) akm(m-栈空, vv=n+1 =v=n+1 =v=n+1 =#include #includ
6、e “stack.h” #definemaxSize3500;unsignedakm(unsignedm,unsignedn) struct node unsigned vm, vn; stackst(maxSize); nodew; w.vm= m; w.vn = n; st.Push (w); do while(st.GetTop().vm0) while(st.GetTop().vn0unsigned/akm(m-1akm(mn-1/akm(mn-1), akm(mw.vn-; st.Push( w);w=st.GetTop(); st.Pop(w.vm-; w.vn=1; st.Pus
7、h(w/akm(m-103021201111210112100122121212121akm(0,2) =v= akm(1,akm(0,1) =akm(0,3) =v= akm(1,akm(0,2) =v=akm(1,akm(0,1) =akm(0,4) =v= akm(1,akm(1,v=akm(2,akm(1,akm(2,w=st.GetTop(); st.Pop(); v=w.vn+; if ( st.IsEmpty( ) = 0 )/akm0akm1, */vakm1, */如果栈不空, 改栈顶为( m-1vw=w=st.GetTop(); st.Pop(); v=w.vn+; if
8、( st.IsEmpty( ) = 0 )/akm0akm1, */vakm1, */如果栈不空, 改栈顶为( m-1vw=st.GetTop(); st.Pop(); w.vm-; w.vn=v; st.Push(w);while(st.IsEmpty()=0 return5-3 sn 件物品,重量分别为 w1w2, wnn件物品中选择若干件放入此背包中,使得放入的重量之则称此背包问题无解(或称其解为假)(s s s 0且ns 0且n物品件数不能为负KNAP(s,n) KNAP(sn1)False,Truen )if(s=0 ) returnif(s0 &n1)returnFalse; if
9、 ( Knap ( s Wn, n-1 ) = True )coutWn,; returnTrue;returnKnap(s,n-1w0,1,2,4,8,1632,s51,n6 Knap(51,returnTrue, Knap(51-32,returnTrue, Knap(19-16,returnTrue, Knap(3-8,returnKnap(3,returnTrue, s= -5 returnKnap(3-4,returnKnap(3,returnTrue, s= -1 returnKnap(3-2,returnTrue, Knap(1-1,returnTrue, s=return j+
10、1 列。)0# 1# 2# 01233# 4# 01235# 6# 0# 1# 2# 3# 4# 5# 6# 8 i 1 n 试探j j+1 列。)0# 1# 2# 01233# 4# 01235# 6# 0# 1# 2# 3# 4# 5# 6# 8 i 1 n 试探j1,nj j j i+1行皇后。解题时设置 4 个数组:coln :coli i md2n-1 :mdk k sd2n-1 :sdk k qn i ij计算主对角线ki+j。nvoidi ) k forj =0; j n; j+)if(colj =0 &mdn+i-j-1=0 &sdi+j =0) colj=mdn+i-j-1=
11、sdi+j=1; qi=j; if ( i = n ) for(j=0;jn;j+)coutqj,; cout endl;else Queen (i+1colj =mdn+i-j-1 =sdi+j =0; qi =/第 i j /在第 i j /i+1 /撤消第 i j 5-5 f为单链表的表头指针#includeiostreamclassclass ListNode friendclassList; ListNode *link; ListNode( classList/定义在头文件RecurveList5-5 f为单链表的表头指针#includeiostreamclassclass Lis
12、tNode friendclassList; ListNode *link; ListNode( classList/定义在头文件RecurveListh/itemdata(itemlink(NULL) /ListNode , Max(ListNode *f); Num( ListNode *ffloatAvg(ListNode&n List() (NULL),current(NULL) List () /创建链表结点, /建立链表, retvalue/ListNode*NewNode( item voidNewList(voidPr List ( retvalue GetMax ( ) re
13、turn Max ( GetNum() returnNumfloatGetAvg()returnAvg); ); ); ListNode*List :NewNode( item) /ListNode*newnode=new ListNodereturnvoidList:NewList( retvalue ) /建立链表, retvalue=value; ListNode cout value;while(value!=retvalue ) q=NewNode(value/value/空表时, /非空表时, cout value;while(value!=retvalue ) q=NewNode
14、(value/value/空表时, /非空表时, /if =NULL=current =current=q; else current-link=cincurrent-link=/voidList :Pr List ( ) coutnThe Listis : /ListNode*p;while(p != NULL) cout data coutlink; List:Max(ListNode *f )if(f-link= NULL)return f -temp =Max ( f-linkif(f-datatemp)returnf-data; else return temp;/: /如果当前结点
15、的值还要大, /List:Num(ListNode*f) if(f=NULL) returnreturn1+Num( f-link/: /空表, /否则, ist:Avg(ListNode*fif( f-link=NULL&n ) /: /链表中只有一个结点, n =1; return( float)(f-data); else floatSum=Avg( f-link,n )*n; return( f -data+Sum) /n; #include/mainargc,char*argv)Listcoutcin finished; test.NewList(finished); test.Pr
16、 List ( );cout nThe Max is : test.GetMax ( ); coutnTheNumis:test.GetNum();coutnTheAveis:test.GetAve() finished; test.NewList(finished); test.Pr List ( );cout nThe Max is : test.GetMax ( ); coutnTheNumis:test.GetNum();coutnTheAveis:test.GetAve()value.listname:elem-value.atom;classGenList GenListNode
17、/;/lsvoidtraverse(GenListNode *ls voidRemove( GenListNode*lsGenlist(char&valueGenList ( ); voidtraverse();(2) voidGenList :traverse() /构造函数value/traverse#includeiostreamvoidGenList:traverse(GenListNode*lsGenlist(char&valueGenList ( ); voidtraverse();(2) voidGenList :traverse() /构造函数value/traverse#in
18、cludemark=/私有函数, if(ls-utype=0)coutvalue.listnameutype = 1 ) couttlink!=NULL) coututype=2 ) if(ls-value.hlink-mark=0)traverse(ls-value.hlink); else cout value hlink-value.listname;if(ls-tlink!=NULL) couttlink/elsecout对上图所示的广义表进行遍历,得到的遍历结果为A(C(E(x,yaD(E,e)(3) #includeiostream#include“stackvoidGenList
19、:traverse(GenListNode *ls) 01y01x00E01e0200D01a0200C020200AStackGenListNode*st; while ( ls != NULL ) ls-mark=if(ls-utype=2 ) if(StackGenListNode*st; while ( ls != NULL ) ls-mark=if(ls-utype=2 ) if(ls-valuehlink-mark=0 st.Push(ls-tlink); ls=ls-valuehlink; else coutvalue.hlink-if(ls-tlink!=NULL)couttl
20、ink;elseif(ls-utype=0)coutvalue.listnameutype = 1 ) couttlink!=NULL) couttlink=NULL) cout );if(st.IsEmpty()=0) ls=st.GetTop(); st.Pop(if(ls!=NULL)cout,; else cout );elsels= ls-/过/暂存下一结点地址/该子表过, 仅输出表/子完, 子表结束处/(4) #include #include #include “stack h”maxSubListNum=/GenList:GenList(char&value) Stackst(maxSubListNum); SeqList Name (maxSubListNum);SeqListPo r /GenListNode*p,q,m=0, ad,/m为已建表计数, br coutcout开始输入广义表数据, A(C(E(xyaD(E(xyecin=q = new GenListNode(0,ch /if(chcout开始输入广义表数据, A(C(E(xyaD(E(xyecin=q = new GenListNode(0,ch /if(ch!=value)Name.Insert(ch,m); else retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国精制棉行业供需趋势及投资策略研究报告版
- 2024-2030年中国空调塑件项目可行性研究报告
- 2024-2030年中国碱性食品行业发展趋势预测及营销策略分析报告
- 通信行业安全生产隐患整治方案
- 2024-2030年中国石墨化石油焦增碳剂行业需求分析及投资可行性研究报告版
- 2024年度城市供水工程改造施工合同
- 2024年定制版:港口航道工程劳务分包合同细节
- 2024丙方提供无人机摄影服务合同
- 砖砌围墙工程施工方案中的人员培训
- 酒店宴会食物安全应急演练方案
- (新版)食品生产企业食品安全员理论考试题库500题(含答案)
- 七年级语文上册第13课《纪念白求恩》公开课一等奖创新教案
- 统编版语文六年级上册第八单元大单元整体教学设计
- 教师个人业务学习笔记(41篇)
- 2025年高考语文复习备考复习策略讲座
- 数学史上的三次数学危机
- 2024年水电暖安装承包合同
- 缺乳(乳汁淤积)产妇的中医护理
- 2024北师大版新教材初中数学七年级上册内容解读课件(深度)
- 2024年公共营养师三级考试试卷及答案
- 2024年上半年软考信息系统项目管理师真题
评论
0/150
提交评论