函数的递归调用与分治策略_第1页
函数的递归调用与分治策略_第2页
函数的递归调用与分治策略_第3页
函数的递归调用与分治策略_第4页
函数的递归调用与分治策略_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数的递归调用与分治策略递归方法是算法和程序设计中的一种重要技术。递归方法即通过函数或过程调用自身将问题转化为本质相同但规模较小的子问题。递归方法具有易于描述和理解、证明简单等优点,在动态规划、贪心算法、回溯法等诸多算法中都有着极为广泛的应用,是许多复杂算法的基础。递归方法中所使用的“分而治之”的策略也称分治策略。递归方法的构造构造递归方法的关键在于建立递归关系。这里的递归关系可以是递归描述的,也可以是递推描述的。下面由一个求n的阶乘的程序为例,总结出构造递归方法的一般步骤。[例1]从键盘输入正整数N(0<=N<=20),输出N!。[分析]N!的计算是一个典型的递归问题。使用递归方法来描述程序,十分简单且易于理解。[步骤1]描述递归关系递归关系是这样的一种关系。设{U1,U2,U3,…,Un…}是一个序列,如果从某一项k开始,Un和它之前的若干项之间存在一种只与n有关的关系,这便称为递归关系。注意到,当N>=1时,N!=N*(N-1)!(N=1时,0!=1),这就是一种递归关系。对于特定的K!,它只与K与(K-1)!有关。[步骤2]确定递归边界在步骤1的递归关系中,对大于k的Un的求解将最终归结为对Uk的求解。这里的Uk称为递归边界(或递归出口)。在本例中,递归边界为k=0,即0!=1。对于任意给定的N!,程序将最终求解到0!。确定递归边界十分重要,如果没有确定递归边界,将导致程序无限递归而引起死循环。例如以下程序:#include<iostream.h>识intf非(int展x){仁ret样urn(f劝(x-1)管);}夜main(凶){和cou称t<<f(凝10);}权它没有规定黑递归边界,帜运行时将无吹限循环,会塑导致错误。少[步骤3]泊写出递归函孤数并译为代抚码悔将步骤1从和步骤2中党的递归关系计与边界统一铃起来用数学朵语言来表示蚕,即迹社N*(N辈-1)!番当N>=1膀时n!=亲许1语羊当N=0时扣再将这种关笨系翻译为代阳码,即一个艇函数:读long书f(int颂n){五if(拖n==0)萄re歪turn(矿1);else即re历turn(杀n*f(n佛-1));}席[步骤4]符完善程序脊主要的递归阻函数已经完厉成,将程序勉依题意补充旱完整即可。小//ex1刘.cpp肆#incl拣ude<兴iostr捐eam.h台>间lon杂gf(i野ntn)甜{刮if(驱n==0)姑re钟turn(枯1);else灯re杰turn(舍n*f(n洲-1));}趟main(田){扇int刺n;维cin>涂>n;是cout陷<<end冻l<<f(耀n);}燃综上,得出疤构造一个递逮归方法基本胸步骤,即描各述递归关系工、确定递归趴边界、写出钩递归函数并狱译为代码,发最后将程序浑完善。以下给继续引用一汉些例子来讨矮论递归方法鼠的应用。悦经典递归问蓬题磁以下讨论两草个十分经典诸的递归问题杜。它们的算院法构造同样洒遵循刚刚得即出的四个步蝇骤。了解这洋两个问题可号加深对递归密方法的理解裤。讲[例2]F茫ibona凡cci数列柜(兔子繁殖谨)问题:已公知无穷数列模A,满足:使A(1)=酸A(2)=锈1,A(N红)=A(N刻-1)+A灿(N-2)李(N>=3长)。从键盘哲输入N,输者出A(N)孤。附[分析]递千归关系十分捆明显,由A桥(N)的表躺达式给出。旗需要注意的础是本例中对阀于N>=3朱,A(N)半的值与A(晴N-1)和推A(N-2艇)都有关。[代码]以//ex2巷.cpp翅#incl晒ude<描iostr丹eam.h捕>肆long浪fibon真acci(更intx帝){习if(钩(x==后1)||命(x==蜘2))仆饥ret姿urn(1躺);else者re君turn(挪fibon凤acci(杀x-1)+拥fibon场acci(趁x-2))裙;}脏main(答){称int遗n;搬cin>嗽>n;冤cout想>>end泼l>>fi浮bonac塌ci(n)蚁;}吧[成例3]Ha立noi塔问样题。漫[可问题描述]穗在霍比特人袜的圣庙里,秀有一块黄铜使板,上面插辰着3根宝石议针(分别为纯A号,B号向和C号)。个在A号针上纵从下到上套柿着从大到小纳的n个圆形勾金片。现要木将A针上的越金片全部移摔到C针上,扭且仍按照原贞来的顺序叠误置。移动的贸规则如下:脱这些金片只挺能在3根针灾间移动,一钱次只能一片身,且任何时嫁候都不允许勾将较大的金倍片压在较小慧的上面。从挖键盘输入n孟,要求给出此移动的次数劳和方案。药[分析]由爱金片的个数非建立递归关腹系。当n=谊1时,只要凳将唯一的金驴片从A移到落C即可。当毒n>1时,发只要把较小掩的(n-1需)片按移动奸规则从A移奶到B,再将枝剩下的最大陵的从A移到垫C(即中间偏“赖借助尘”场B把金片从贝A移到C)绝,再将B上青的(n-1叔)个金片按腿照规则从B挨移到C(中寻间依“瑞借助无”撇A)。延本题的特点挖在于不容易捉用数学语言浑写出具体的使递归函数,式但递归关系准明显,仍可都用递归方法涨求解。[代码]渗//ex3早.嘱cpp奖#incl县ude<后iostr升eam.h嘴>叠hanoi严(int飞n,cha睛rt1,跨char若t2,ch桐art3管){柴if(性n==1)荷co端ut<<"艘1"<<柿t1<<"坊"<<t桨3<<en锣dl;else{右han哨oi(n-芳1,t1,捞t3,t2战);制cou浓t<<n<稼<""<升<t1<<读""<<绳t3<<e夺ndl;丢han袭oi(n-团1,t2,粗t1,t3厚);}}搭main(德){莲int诉n;漂cout等<<"Pl菌ease寨enter墨the抚numbe油rof架Hanoi棉:";交cin>俭>n;弓cout监<<"An起swer:变"<<en等dl;抚hano捞i(n,'挥A','B鼓','C'摔);}菌函数递归调户用的应用与湖分治策略摄许多算法都术采用了分治尽策略求解,召而可以说分狗治与递归是循一对孪生兄丸弟,它们经掀常同时被应于用于算法的病设计中。下阴面讨论著名重的Cata功lan数问辣题,人们在康对它的研究摇中充分应用蕉了分治策略室。易[例4]C歪atala主n数问题。踢[问题描述兄]一个凸多亿边形,通过谅不相交于n笛边形内部的俗对角线,剖飘分为若干个乖三角形。求够不同的剖分拣方案总数H司(n)。H坚(n)即为教Catal垦an数。例爷如,n=5古时H(5)娃=5。蛮[分析]C听atala污n数问题有培着明显的递罩归子问题特穗征。在计算茄Catal轿an数时虽馆然可以推导典出只关于n贷的一般公式岗,但在推导粗过程中却要音用到递归公寻式。下面讨校论三种不同舅的解法,其饱中第三种解多法没有使用糕递归,它是丈由前两种解督法推导而出蛾的。竹[解法1]续对于多边形近V1V2饥…候Vn,对角仅线V1Vi脆(i=3,揭4,净…朴,n-1)域将其分为两爸部分,一部福分是i边形抗,另一部分久是n-i+杠1边形。因打此,以对角秆线V1Vi偿为一个剖分矩方案的剖分篇方案数为H间(i)*H难(n-i+往1)。还有的一种的特殊栋情形,是对苏角线V2V餐n将其分为发一个三角形尼V1V2V汉n和一个n衔-2+1边宁形。为了让狠它同样符合馆粗体字给出狸的公式,规碧定H(2)罩=1。于是念得到公式:铅H(n)=踢∑死H(i)*信H(n-i念+1)(爸i=2,3师,席…跑,n-1)付----布公式(1)炒H(2)=纤1验有了这个递筒归关系式,尸就可以用递必推法或递归隐法解出H(扭n)。蛋[解法2]知从V1向除殃了V2和V旅n外的n-迈3个顶点可根作n-3条沙对角线。每峰一条对角线端V1Vi把雹多边形剖分神成两部分,爆剖分方案数锹为H(i)左*H(n-降i+2),趋由于Vi可偷以是V3V般4登…蜘Vn-1中痒的任一点,磁且V1可换券成V2,V微3,朽…慕,Vn中任召一点也有同系样的结果。溉考虑到同一汤条对角线在奋2个顶点被奇重复计算了圈一次,于是默对每个由顶仆点和对角线得确定的剖分钱方案都乘以独1/2,故倦有茅H(n)=岛n怀∑竿(1/2)捧H(i)*尾H(n-i奉+2)(长i=3,4手,参…宽,n-1)腥把(1/2辛)提到兴∑明外面,迷H(n)=糠n/(2*杠(n-3)别)星∑践H(i)*符H(n-i乌+2)(潮i=3,4初,愉…雅,n-1)爆----羡公式(2)日规定H(2隶)=H(3炭)=1,这揉是合理的。鸦由公式(2河)和H(2核)=1,同稍样可以用递秋推法或递归布法解出H(份n)。店[解法3]势把公式(淡1)中的自贸变量改为n扰+1,再将偏刚刚得出的衰公式(2)热代入公式(液1),得到甘H(n+1予)=艳∑来H(i)*银H(n-i铅+2)(雁i=2,3可,爱…摸,n)早由公式(随1)侍H(n+1念)=2*H注(n)+刃∑剂H(i)*麦H(n-i厅+2)(拥i=3,4截,雄…饺,n-1)潮由H黄(2)=1箭H(n+1核)=(4n颤-6)/n定*H(n)备由公既式(2)暑H(n)=狸(4n-1脏0)/(n博-1)*H较(n-1)嫁----须公式(3)开这是一个较捎之前两种解朝法更为简单耐的递归公式例,还可以继篇续简化为尾H(n)=裹1/(n-寺1)*C(铁n-2,2户n-4)净----公奋式(4)种这就不需要醒再使用递归升算法了。然股而在程序设挖计上,公式借(4)反而清显得更加复海杂,因为要咐计算阶乘。纠因此最后给伍出由公式(稠3)作为理奸论依据范例甩程序代码。价代码相当简怒单,这都归蚊功于刚才的海推导。如果悠用前两种解农法中的递归底关系,程序帝会变得复杂秃且容易写错背。因此,有康时对具体问率题将递归关籍系公式进行台必要的化简您也是至关重字要的。[代码]初//ex4棵.cpp雅#incl棚ude<裁iostr汪eam.h刊>伙#defi粮neMA车XN10桌0镜long挠f(int恢x){歌if双(x==3犹)丽r裂eturn询(1);沿els稿e舍r侦eturn扑((4*x普-10)*闯f(x-1搁)/(x-两1));}妻main(牢){忘int始n;企co修ut<<"委\nPle插asei羡nput牧Nfor浮aCa塑talan租numb区er:";蹲cin辫>>n;炸if娇((n<竖=MAXN绢)&&酷(n>=3耽))快c队out<<侨"The浊answe竟ris:听"<<f(遵n);}嘉本例编程时唉还有一个细董节问题需要男注意。注意来函数f中的厘斜体部分,感按照公式(习4)计算时辱一定要先进屋行乘法再进沾行除法运算佩,因为(4帜*x-10治)并不总能利整除(x-康1),如果垦先进行除法望则除出的小贡数部分将自房动被舍去,悠从而导致得嫩到不正确的兰解。冶数学上许多霉有重要意义勾的计数问题舅都可以归结近为对Cat凯alan数慌的研究。可辰以看到,本段例中的递归祖关系经简化齐还是相当简往单的。下面绵讨论一个递然归关系略为慎复杂的例子周。伸[例5]快垮速排序问题线。急快速排序是抬程序设计中屯经常涉及的修一种排序算狠法。它的最稀好时间复杂夺度为O(n古log2n龄),最差为苏O(n2)质,是一种不磨稳定的排序因方法(大小用相同的数在玩排序后可能剑交换位置)拥。漆[算法描述严]快速排序扇的一种基本皇思想是:要摔将n个数按涨由小到大排弄列,在待排盒序的n个数第中选取任一付个数(在本第例中取第一帮个),称为白基准数,在讯每一次快速章排序过程中斯设置两个指倒示器i和j糊,对基准数苹左边和右边看的数同时从听最左(i)飘和最右(j拣)开始进行蜻扫描(i逐窗1递增,j闪逐1递减)毕,直到找到荡从左边开始钓的某个i大鹅于或等于基垦准数,从右交边开始的某残个j小于或颠等于基准数鸭。一旦发现钞这样的i和叉j(暂且称然之为一个壮“暮逆序对介”仿),则把第冬i个数和第耽j个数交换匆位置,这样市它们就不再住是逆序对了交,紧接着再庸将i递增1点,j递减1芦。如此反复昼,在交换过蓝有限个逆序开对后,i和揉j将越来越津靠近,最后笛“教相遇招”仗,即i和j捏指向同一个吼数,暂且称催之为相遇数傲(极端情况谁下,如果一筛开始就不存浓在逆序对,旺i和j将直沈接尝“里相遇嫂”度)。相遇后安就保证数列狠中没有逆序扎对了(除了看在上述的极日端情况下基钳准数和自身兆也算构成一论个逆序对,铜注意粗体字眯给出的逆序针对的定义)航。继续扫描赤,非极端情翻况下,由于下数列中已经招没有逆序对躲,i递增1嘱(如果相遇伴数小于基准陷数)或者j营递减1(如穴果相遇数大盈于基准数)忙后即算完成配了一趟快速秧排序,这时睁第1到第j肝个数中的每南个都保证小腿于或等于基挎准数,第i盘到第n个数搬中的每个保越证大于或等摄于基准数。五此时,递归市调用函数,降对第1到第娘j个数和第增i到第n个干数分别再进椒行一趟快速绢排序。如果短在极端情况轧下,程序认浅为基准数和辛自身构成逆庭序对,则将锈基准数与自短身交换(这产其实没有作截用)之后i颜递增1,j匙递减1(注灿意斜体字给仍出的对逆序津对的处理方耳法),同样榴对第1到第唱j个数和第怒i到第n个众数分别再进默行一趟快速鱼排序。咬最后的问题呀就是确定递剖归边界。由瓜于被排序的柿数列将不断研被划分为两车个至少含一锡个数的子列怎(因为在每惕趟排序最后呆进行递归调弄用函数时i进<>j),桐最后子列的姨长度将变为摔1。这就是同递归的边界伯。在程序实名现是,本着伸“件能排则排升”冶的原则,只半要第一个数诞小于j(或亏者第i个数理小于最后一怒个数),即喉进行递归。私[主程序(卧递归函数体宇)]剧void奸Quick熟Sort(酒RecTy竭peR[按],in尸ts,i付ntt){冲int馒i=s,古j=t,k故;稍R赶ecTyp童etem突p;石if涉(s<t){弊挤temp=虾R[s]详//用区证间第1个记悬录作为基准薪怒while内(i!=咸j)//拌从两端向中宪间交替扫描抓,直至i=姜j;歌酿{捉千w呈hile(裹j>i&倡&R[j]牵.key>压temp.朵key)搏蔬建识j--;曾阀i脑f(i<j磁)咬泻烈{迷栽牺滋R[i]=凶R[j];愚屈经注i++;蚀衬坛}厚贞切whil奇e(i<挂j&&R[涨i].ke舱y<tem每p.key墨)艺妄嫂沙i++;撇词i展f(i<j燕)赵胸帽{绘申睬钩R[j]=虫R[i];贷扶滴统j--;呢而焦}嫌蛾}评R[致i]=te臂mp;妥Qu绘ickSo骨rt(R,兄s,i-1嘴);窃Qu始ickSo繁rt(R,绩i+1,t乡);}}恶[节例6]怨“达九宫阵族”架智力游戏。辽[问题描述战]一个9跟×锣9方阵,由尖9个袋“熄九宫格才”轧组成,每个辨九宫格又由母3陆×骨3共9个小则格子组成。羞请在每个空阅白小格子里番面填上1~法9的数字,暗使每个数字印在每个九宫客格内以及在贫整个九宫阵省中的每行、物每列上均出默现一次。采(1)编程马将下面图中压的九宫阵补斥充完整。恰(2)讨论粱是否可能给落出末“附九宫阵呼”眨的全部解?丛[分析]本封题可利用回虎溯法解决,挽其基本思想存为深度优先容搜索(DF换S),这也孤是一种以分场治策略为基泉础的算法。铃回溯法与纯凭粹的DFS息不同的是,率它在搜索过甲程中不断杀违死不合题意蛾的结点。这惕一点保证了坛解法的效率疤。角首先考虑如工何得出全部矩解的情况。双解空间树容胖易构造,只丑需按顺序(别从第一行第楼一个数字开栏始到第一行耽最后一个,闸然后第二行晚……生,一直到最或后一行最后灶一个数字)软“无尝试搬”僻填入数字即带可。裤为了解决这迹个问题,我锣们需要先编践写一个函数台check隔,其原型为悉intc最heck(亲inti中,int枕j,int周k),用引于求第i行旺第j列能否蔽填上数字k尿。如果可以漫,返回1,度否则返回0仓。由于我们锐是按顺序填事入数字的,铜看起来一个够数字后面的芽数字并不在剩判断能否填锄的范围内。殊但为了解决小题中某个特础解问题的方盾便,还是引乎入较为严谨钉的判断方法尖。丽函数che樱ck代码如依下:贡intc佣heck(踪inti幕,int博j,int缝k){侨int乘l,m,丑pi,pj恰;稳//1蜜.Che剃ckth破elin购e大for舌(l=1光;l<=9飘;l++)奇i丸f((萌l!=j)深&&(序a[i][喇l]!=0激)&&孔(a[i]暮[l]==宿k))摊德retu雾rn(0)扶;踏//2挎.Che兆ckth氧ecol稀umn这for骗(l=1遍;l<=9他;l++)职i侧f((膊l!=i)睬&&(多a[l][表j]!=0百)&&驾(a[l]虫[j]==届k))缓拍retu阶rn(0)使;迷//3姜.Che饺ckth预e3x3玉matr逼ix高//3桨.1Fi滩rstly份we书will江have狱toch屠eckt苗hepa悠rent_康i(pi)郑and剑paren郑t_j(p银j)线if吃(i<=3知)pi=溉1;产els渡eif学(i<=6划)pi=将4;矩els悔epi=破7;冷if迫(j<=3斧)pj=绩1;夫els盏eif抵(j<=6规)pj=壶4;净els区epj=效7;航//3忙.2No衬wwe圣canc裤heck监it批for接(l=0补;l<=2扶;l++)个fo央r(m=炼0;m<=检2;m++蔬){捎苍if(卡((pi+智l)!=i拉)&&珠((pj+译m)!=j朋))港惜if枕((a阵[pi+l秩][pj+扒m]!=0莲)&&属(a[炭pi+l]障[pj+m页]==k凭))烤嚼re专turn(弱0);}帜ret命urn(1姨);}惊结合注释很域容易就能接细受函数的思祝想,不予过赔多说明。铲下面考虑程姑序最重要的插部分,即递歌归函数。思尾路是这样的岭:假设某一板格能填入某吼数,把这个葱格子看成解昌空间树的一宿个结点,由晓它可以扩展俱出9个儿子笼,即下一格购填什么数(贞由1到9逐序个尝试)。闲对下一格,粒同样这样考龟虑。不断用秆函数che拆ck函数考孝察某一个能环否填入某数柄,一旦函数邻check旗返回0,则劲杀死这个结香点。鞭如果能一直迁填到最后一荡个数,结点翠仍未被杀死扎,则这是一弦个解。景这种思想可旅用伪代码表津示如下:闲proce券dure厘backt限rack(扛i,j,k键:inte乒ger);关if烤check已(i,j,怖k)=tr制ueth犁en继beg撑in盯a[薯i,j]=抱k;客Ge恰nerat潜e_nex捏t_i_a劈nd_j;撕if缺i<10辈then景be吨gin丙就forl岁:=1t场o9d普o肾丽bac督ktrac挡k(i,j舒,l);endelse甲Do_端Outpu雁t;费a[i,j核]:=0;波end明;斧注意斜体的怎“贝a[i,j荒]:=0倒”失必不可少!锋当对某个结律点(x,y帖)扩展的过换程中,可能宇在扩展到(位x+m,y旱+n)时它稠的子树被完峡全杀死(每竹个结点都被亮杀死,亦即堡按照(x,抬y)及之前述的填数方案倾填数,无解善)。这时需左要保证(x顽,y)以后悼所填的数被并重新置零,朴这个语句的皂作用即在每旧个结点被杀连死时都将其未置零。径将伪代码翻污译为C++穗代码:蜜backt辅rack(测inti兆,int悬j,int语k){伯int育l;嫁if洒(che鲁ck(i,蹦j,k)=露=1){钩a壳[i][j丛]=k;纲//Fil虚lin顿theo朝kays免oluti染on珠/片/Gene枯rate捐next跟i,j拼i获f(j<洪9)j+词+;鼻槐else即{i+羊+;j=橡1;}霜//End税ofG角enera聪tene肉xti,胳j理i和f(i<挽10){意乱fo决r(l=由1;l<=产9;l++言)计乒bac他ktrac验k(i,j堵,l);顿童}家e占lse猜闪outp依ut();痰a盆[i][j誓]=0;评/*Whe杆nfai凡lsan迹dgoe旅supp晴erwar柿ds,t你heva嘱luem彼ustb那ecle袄ared*话/}}塑函数out罚put()鲁用双重循环乓完成输出。防在主函数m绪ain()蜻对back阀track歇(1,1,兔i)进行一缴个循环,i折从1取到9悲,即可完成办整个程序。樱运行时发现搭九宫格的解掏相当多,即系使保存到文台件中也不现咱实。这就回蓄答了第2个次问题。荡对于第1个藏问题,将这新个程序略加蛙改动,即赋慈予全局数组辆a以初值,拖并在过程b光acktr楚ack中产蒸生下一个i课和j时跳过华有初值的部吼分,即可将威程序转化为偏求填有部分循空缺的九宫坊格程序。全最后给出填押充有部分空吴缺的九宫格敬的完整源代痒码。博#incl炊ude<昨iostr父eam>乐using览name失space瓣std;闲inta沿[11][排11]={谎0};啊intc驼heck(筒inti店,int宴j,int疾k){布int膊l,m,阴pi,pj闷;犬//1盘.Che邀ckth著elin宰e父for刷(l=1渔;l<=9期;l++)忽if(莲(l!=舟j)&&响(a[i丑][l]!呀=0)&期&(a[斗i][l]恐==k)时)病re服turn(搭0);唇//2极.Che价ckth称ecol灾umn墨for争(l=1尿;l<=9疾;l++)肯if(械(l!=办i)&&狂(a[l悲][j]!梨=0)&等&(a[薪l][j]辰==k)吉)后re脊turn(茂0);樱//3敢.Che屿ckth签e3x3株matr悬ix间//3输.1Fi圾rstly写wew米illh暑avet络oche罗ckth庙epar扎ent_i掏(pi)仿andp锄arent晨_j(pj玻)驻if赔(i<=3牌)pi=柄1;桶els疫eif韵(i<=6萌)pi=厕4;干els尺epi=宝7;转if壶(j<=3缝)pj=亚1;我els旋eif轮(j<=6锦)pj=政4;汽els平epj=玩7;勉//3彻.2No唯wwe姓canc拔heck硬it键for越(l=0麦;l<=2里;l++)泽fo笛r(m=电0;m<=越2;m++员){元if爱(((p婆i+l)!永=i)&关&((p宪j+m)!伯=j))清i尘f((区a[pi厌+l][p斯j+m]!声=0)淋&&(拼a[pi+缴l][pj南+m]==含k))五re羞turn(亮0);}钉ret关urn(1低);}骗void朵outp汤ut(){呆int杨i,j;导cou失t<<"O览neso欲lutio返nis:剩"<<en悔dl;悔for招(i=1纤;i<=9术;i++){领for餐(j=1;勿j<=9;斑j++)浆co织ut<<a马[i][j搭]<<"储";扎cout写<<end摆l;}}嗽void鲜

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论