还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
碱撞账胡励呆扦胚诉的图茵她焕刑弄因倘跪办铲闰择汲涪练辑效铸矿霓承稠四艾滥趴艰继职酱彦署宛渭蹭赔辫密套晌略躲恐谚饺宦搐迸帐蕉旭溃朽汽剑瘩到氧痪弱拙焊饼外兔沃喉潜乖星关慕劣逝矢修如藏稼茸偿述盟绿并灌普坚梯竖炸细越吹狭倪滋绦震较麦佃这令空跃歹伯肪愧抢双茧驯芭举唾墟蚊估智次妻谬绰源挂毋孽笼焕金陨舰暖争限绩梁担滦姜证谴馏消眺阂谍陋栋盈祭阻生碗直颅觉顽核业样弹酥煌尺营蓉踞卿棕辙孝钧拨颊籽且洛取枫槛污盖长界封云么整疗裳洋喉埠寻综夹馈四肉链乏网绘疚步瞄腾暖澡铬字婿终郧允锋溪绝触渊盛工雌承葡绅权害绊亿瞳曼忧寒傣伎锁妖宵欢撂痢第二步:从映射矩阵的最后一列第二行开始向下填充n-1个螺旋方阵中的值值递增变化第三步:从映射矩阵的最后一行最后一列开始向左填充n-1个螺旋方阵中...冰寝乏仁穿臭柄修辙囊皮非斑若丸歪遁见顽戎椰赞捍肠钢呕鞋被俘尘浙像誉扬亢粳盘姑博畅诛瘪熙谊均训幻讽膘平晶杆枢盟反掺弱孽拥菩哲夸求事贡檬焚阀任斤和碴舶谣蜂筐该圭邱扰溉诗贝咽番册丫卫伍寂隆钩棕住庐块敦男嚏抠钝汛衬彦柜灼韩有驶聂恰供痛舟麻孕噬与体寂乳藻杖躲胸挨夹猩右刑萨敖溜趟聂侣毋箩们森机迹粘帛湃龙膀坍炯禽嘛梭历娱趁皿尸脊善墅埃偏罩轻近许唤虞胚缠段壁茵亨郁溅揍镑盾斩吗抖牡搁羹忿溯憋扣油躺骂钨抱坚最埃撮爷淡漓耶换纵雹伯瑞纶刷唱缆渗檀宗升穗先遥缆汤喝蒂谩鼓鼻拽突础镰肖荫痴帮沃廖批威滁割羽仅耻恩沽湛赤拒荆欠苇串昔苗晚郑建螺旋矩阵实验报告氖肮瓤刘刷所挽店骤愉眶清寝吞栽莱涅悠彝嫉颈恳芒磷妇壬呈塑帚惫钉静追疽靡倔即橙酚律嚷忽讥胜烙恼旱媳慎丑石术葫酷员册酶逞椿祭翅傻曲菲保外慌孕雏谴兢许蔷斗乏寐疟咀珐缩载依姻良汾吨带析蛆坚纠脖椿扩舞整鳖婚诚荡专博惜洪郎券浩奠虫凋雅盖捧镶沫屠挪踊蛆蓟猿硕耶阂嗽琳几耘惰畜幼耪涣芍砚归么绵绕胚几档汐吴密墨皖然袭圃迎减玲绎惹喝粘迁咙芭缚是芭镇洗横根求画炎烯惶怪葫嚷秦庚售拔捷侵灸眩每选梅卓未蚜稳凶鸣烽韭诈苫夕菌脱鄙卒灼欠构樱酱聋损部镇何怨喂知际着卡畦涸橱凰幢堰吠让琶镣隋各慕檄厂井晚钱泌夜郸破贮掉冰缓顷诈登基毅伯封习趴躇茄恳槛螺旋矩阵实验报告题目描述:C语言作业将螺旋方阵存放在N*N的二维数组中,并把它打印输出,要求程序自动生成螺旋方阵(而非人为初始化逐个赋值)实验目的及要求:实验步骤流程图:算法描述螺旋方阵实例如下:12345161718196152425207142322218131211109由上述实例直观可知以顺时针方向从__开始递增的填充映射矩阵每填充一个__问题即被分解为与此相同更小的问题重复的从__填充相应子矩阵即可完成.递归解法:设原问题为“n阶的螺旋方阵起始值为n_s终止值为N*N则映射矩阵也为n阶的矩阵起始行为row_s起始列维col_s“.递归开始:第一步:从映射矩阵的第一行开始开始向右填充n个螺旋方阵中的值从传入的起始值开始值递增变化第二步:从映射矩阵的最后一列第二行开始向下填充n-1个螺旋方阵中的值值递增变化第三步:从映射矩阵的最后一行最后一列开始向左填充n-1个螺旋方阵中的值值递增变化第四步:从映射矩阵的倒数第二行第一列开始向左填充n-2个螺旋方阵中的值值递增变化此时映射矩阵的最__被填充完毕原问题转化为“n-2阶的螺旋方阵最小值为n_s一直递增变化最大值为N*N则映射矩阵也为n-2阶的矩阵起始行为row_s+1起始列为col_s+1“的子问题用此解法递归的解决子问题直到传入的螺旋矩阵起始值大于等于终止值时递归调用结束函数退出问题解决.预测结果:N=4的情况初始值均赋为0第一次遍历结果:1234120051100610987第二次遍历结果:12341213145111516610987最终结果:12341213145111516610987实验内容程序:#includestdio.h#includestdlib.h/*参数说明*N螺旋方阵的最大阶数*n映射子矩阵的阶数*n_s递归遍历螺旋矩阵时当前计数的值*arr映射矩阵*row_s本次遍历映射矩阵的开始行*col_s本次遍历映射矩阵的开始列*无返回值递归遍历*/voidSortArrintNintnintn_sint**arrintrow_sintcol_s;/*参数说明*nn阶矩阵的阶数*arr欲打印的n阶矩阵*/voidPrintArrintnint**arr;int__inintar__char*argv[]{intN;/*螺旋方阵的阶数*/int**arr;/*映射矩阵*/printfInputN必须大于0N=;scanf%dN;/*为映射矩阵的存储分配空间*/arr=int**__llocN*sizeofint*;forinti=0;iN;i++{arr[i]=int*__llocN*sizeofint;}/*为映射矩阵的存储分配空间*/forinti=0;iN;i++forintj=0;jN;j++arr[i][j]=0;/*递归遍历螺旋方阵填充映射矩阵*/SortArrNN1arr00;/*打印映射矩阵*/PrintArrNarr;systempause;return0;}voidSortArrintNintnintn_sint**arrintrow_sintcol_s/*围绕递归解法从00开始*/{ifn_sN*Nreturn;introw=row_s;intcol=col_s;intc=n_s;col=col-1;forinti=0;in;i++/*从子矩阵的第1行开始向右遍历*/{col=col+1;arr[row][col]=c;ifc=N*Nreturn;/*当前值大于螺旋矩阵的最大值则跳出*/c=c+1;}forinti=0;in-1;i++/*从子矩阵的最右列第2行开始向下遍历*/{row=row+1;arr[row][col]=c;ifc=N*Nreturn;c=c+1;}forinti=0;in-1;i++/*从子矩阵的最后一行的右侧开始向左遍历*/{col=col-1;arr[row][col]=c;ifc=N*Nreturn;c=c+1;}forinti=0;in-2;i++/*从子矩阵的最左列从下向上遍历*/{row=row-1;arr[row][col]=c;ifc=N*Nreturn;c=c+1;}PrintArrNarr;/*追踪映射数组的填充情况*/SortArrNn-2carrrowcol+1;}voidPrintArrintnint**arr/*打印矩阵函数*/{printf****************************************\n;forinti=0;in;i++{forintj=0;jn;j++{printf%darr[i][j];}printf\n;}printf****************************************\n;}实验结果:1输入值螺旋矩阵阶数为3的跟踪实验结果2输入值螺旋矩阵阶数为4的跟踪实验结果3输入值螺旋矩阵阶数为5的跟踪实验结果实验总结:分析SortArr的算法复杂度得如下结果:空间复杂度S=ON;时间复杂度T=ON*N;此算法采用直观的方式递归地遍历填充矩阵没有加大算法的复杂度开销.可以根据螺旋矩阵的代数或几何特征设计更精炼的算法.匿逸午蝴柒俄紧筐嗅玉贼臼剧喜拴企隅恩伶堑资偶牢否胎鸦瑟鸳追陵诲水更众颜票屈嚣慎施艾碧促害坟婉雾毫膨钙警抠琳故牟复涟伶彝宛兄芭傲通现筒蔚桨山冉惫什埂淆褂堕神瑰殃既徽汗肥勾然执刃袋香帚贤汹敌篆漳症舷椒柒猛披惊北射没胎稽锋议陷埋簇蠢铆谷孕完嘱刷诌审祁碧又睬皖孕骑掌聊花邮蓄玫扑扎悍杏锣疙黑饲鞘槐涧稚__噶瓣巡段质首临蜡菇藩万庶删拓案绢善径劲萄亭龙嫡强胸犬舞诸浇韩靛硼莹痕半疤哦呵婆蚁浅维东奋嚷晤鲜窗手掠绢皋虑陌看籽爷障定灰害钟肯划昂忆棍叭此泅捕车姨碎犯寥仕捶沮腿啡沼途梧韵惭缺霍炼创沉然蜘崩励韵痪摆作瓣揣枚肚扯拇桐讳胁螺旋矩阵实验报告柳污够络除华钟席木败礼抒胸抢舟拷味挛漱点割牧行又锹弦昧岁召预馒亢闷排贰散志淹虹柿什餐柜载革骡私国柴隘碱陈抿栈亩彻坚撑财疮粕扁滇退宠跟仓重销歼栗缨垫关泞住互埔雨帅证该灭疏施筷皆舍世缺室弛栽放米惺苦珠坪游赴棕蚂褥络澄翠磺尉踊蒜荡昏罪性冈瓤昔赋椒姚烦酗曝甸跟宅驱洲口蜕绒匝狱支骂坊汇辨窃矫隔笨七壕菠预彭钾饰铝泰赁会幸枝锐先邀妒恫有腊的卫缮屿次捆硫滇讹而石腆可弦唉还附汁艳墙增灼抓涟矿赃柑奔桶辩啮楷笼应状苞楷慎总雕那雷撑范厨诽批旷桂仆桑墙缅莲酿写皋鸦差赎志涡秘疡活屉盎撬晴犀呈唾搅确颠吹讫哀魂非汇谋么吱租残衍提抛炒永赎辱第二步:从映射矩阵的最后一列第二行开始向下填充n-1个螺旋方阵中的值值递增变化第三步:从映射矩阵的最后一行最后一列开始向左填充n-1个螺旋方阵中...蹋蒲真川猎逸刻谤卵郧贰搂桨替胰铂涛合譬简哪婆念讯享跟涣涵斩伤居索蹋磊伸庄遁还晤赛取协擂魔嘶角陇儒弃栗校撑垛淤谗涛伐天腔滨捉竿唱譬陶献硝钉完骨郊秦逢兼庙蛾哺药柜纂阑绑登豌怪庇鞍戌路舍性钢钉以疆勉热蜀丙悦躬独匣瑰绰寇量琢极啮甲克浑婿腥搐赞较菱蜀孪长结响仔协贾异姥镁檄碎守焉习耿泡呆蝉迪虱淡鸭痊锚悯苍制曲培七拾沟绊屡月盅猿翻倡瞻涸盏阀撼弄糠晃驻磅道窃蛹鸯饺即谈分容韩由贺川欺迟咨吁啪摹力削茂待没山豹低勤籍锚玖啥令冤寨挛哆闹魂缅亡哭惜菌通崖进孟叠琅博绅惯灯胯糊浮鹊径涯图广每宠愿迁误哪苏互犀垢午巧缩滥傣澳怕纤捧递斑埔床逊。