- 17
- 0
- 约1.25万字
- 约 21页
- 2017-09-20 发布于江苏
- 举报
《算法设计》课程解题报告【DOC精选】
《算法设计》课程报告课题名称: 算法设计课程解题报告课题负责人名(学号):郭泉(0643111084)同组成员名单(角色):独立完成指导教师: 左劼评阅成绩:评阅意见:提交报告时间:2008年12月7日《算法设计》课程解题报告软件工程专业学生郭泉指导老师左劼递归与分治策略排列的字典顺序问题问题描述n个元素{1, 2, …, n}有n!个不同的排列。将这n!个排列按字典序排列,并编号0, 1, …,n!-1。每个排列的编号为其字典序值。算法设计给定n及n个元素{1, 2, …, n}的一个排列,计算出这个排列的字典序值。数据输入由文件input.txt提供输入数据。文件的第一行是元素个数n。接下来的1行是n个元素{1, 2, …, n}的一个排列。结果输出将计算出的排列的字典序输出到文件output.txt。输入文件示例input.txt82 6 4 5 8 1 7 3输出文件示例output.txt8227问题分析对于给定{1, 2, …, n}的一个排列arr,设字典序为DictRankn(arr)。容易知道:(arr[0] – 1) * (n - 1)! = DictRankn(arr) = arr[0] * (n - 1)!– 1既字典序值必大于排列第一个元素arr[0]开始的全排列,且可知DictRankn(arr)是由(arr[0] – 1) * (n - 1)!和排列除第一个元素外的元素在子列内的字典序组成。由此,我们可以构造递归式:DictRankn(arr) = (arr[0] – 1) * (n - 1)! + DictRankn-1(arr’)其中,arr’是arr去掉arr[0]后,在原集合{1, 2, …, n}中去除arr[0]后组成的集合中的字典序。元集合去掉arr[0]需要将所有的大于arr[0]的值的元素减一,故arr’中的大于arr[0]的值的元素也需要减一,组成n-1个元素的排列。既:arr’[i] = arr[i+1] – 1,arr[i+1] arr[0];arr[i+1],arr[i+1] arr[0];初始条件为:DictRank1({1}) = 0代码#include iostream#include fstreamusing namespace std;// calc the factorial of nint factorial(int n){ int s = 1; for(;n0;n--) s *= n; return s;}// calc the dictRank of an arrangementint dictRank(int* arr, int n){ // define the edge if(n == 1) { // if only one element, it the first return 0; } // heading value arr[0] int h = arr[0]; // new arr - arr // shift every element left, if greater than arr[0], decrease by 1 for(int i = 0; i n - 1; i++) if(arr[i + 1] h) { arr[i] = arr[i + 1] - 1; } else { arr[i] = arr[i + 1]; } // return recursion invoke return (h - 1) * factorial(n - 1) + dictRank(arr, n - 1);}int main(){ // inout and output files ifstream fin(input.txt, ios::in); ofstream fout(output.txt, ios::out); // read in n and the arrangment int n = 0; fin n; int* arr = new int[n](); for(int i = 0; i n; i++) { fin arr[i]; } // get Dict Rank and output fout dictRank(arr, n) endl; delete []arr;
您可能关注的文档
- 《电力建设工程质量监督检查典型大纲》(光伏发电部分_电建工程质监总站)表记录【DOC精选】.docx
- 《理论力学》详解答案【DOC精选】.docx
- 《电子病历基本数据集》标准解读【DOC精选】.doc
- 《电磁场与电磁波》教学大纲【DOC精选】.doc
- 《电子电路CAD》【DOC精选】.doc
- 《电子商务技术基础》 - 实验指导书【DOC精选】.doc
- 《目标市场分析与确定》【DOC精选】.doc
- 《热处理》复习资料【DOC精选】.doc
- 《直角三角形的判定》的教学设计【DOC精选】.doc
- 《电磁场与电磁波》必考复习题【DOC精选】.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 毕业论文(设计)-小型液压升降平台机械工程及自动化.doc VIP
- 在线网课学习课堂《现场生命急救知识与技能(南昌大学 )》单元测试考核答案.docx VIP
- 洛可可风格建筑.ppt.ppt VIP
- 鳞状细胞癌学习课件.pptx VIP
- 国企优化整合方案汇编.docx VIP
- 《农机电器设备使用维护》课件——项目一:农机电气系统基础.pptx VIP
- 开工第一课春节复工安全生产培训ppt.pptx VIP
- 宝可梦 Let's Go!皮卡丘1.02版switch大气层系统游戏修改代码.docx VIP
- 《农机电器设备使用维护》课件——农机电气系统的组成及特点.pptx VIP
- 工伤职工停工留薪期分类目录模板范本.pdf VIP
原创力文档

文档评论(0)