常见算法实验题整理.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常见算法实验题整理

实现斐波那契数列的递归算法 1 实现二分检索的递归算法 2 用递归算法求出数组的最大最小元素 4 归并排序算法实现 6 递归快速排序算法实现 9 带期限的作业排序算法 11 二元归并树算法 13 0-1背包问题 16 每对节点之间的最短路径 19 N皇后问题 25 实现斐波那契数列的递归算法 #include iostream using namespace std; //函数声明 int Fibonacci(int n); int main() { int n; cout请输入一个n,将输出Fibonacci前n项数据\nn=; cinn; cout Fibonacci数列的前n项为\n; for (int i=1;i=n;i++) { coutFibonacci(i) ; } coutendl; return 0; } int Fibonacci(int n) { //若为0,输入n不合法,返回0 if (n0) { return 0; } //函数结束条件 if (n==0) { return 1; } if (n==1) { return 1; } //f(n)=f(n-1)+f(n-2); return Fibonacci(n-1)+Fibonacci(n-2); } 实现二分检索的递归算法 #include iostream using namespace std; //二分检索的递归算法,返回为-1,表明查询的数不在查询数组中;否则返回查询数在数组中的下标o int binary_search(int *arr,int low,int high,int target); int main() { //查询数组 int arr[]={11,22,33,44,55,66,77,88,99,110,121}; //查询结果的下标 int flag; //需要查询的数 int n; int len=sizeof(arr)/sizeof(int); cout查询数组中所有的元素为:\n; for (int i=0;ilen;i++) { coutarr[i] ; } cout\n****************************************************************\n; cout请输入一个数n,程序将会判断n是否在查询数组中;输入-1终止程序\n; cinn; while(n!=-1) { flag=binary_search(arr,0,len-1,n); // flag不为-1,表明n在查询数组中 if (flag!=-1) { coutn是查询数组中第flag个元素\n; } else { coutn\n; } cout****************************************************************\n; cout请继续输入需要查询的数据;输入-1终止程序\n; cinn; } return 0; } int binary_search(int *arr,int low,int high,int target) { //没有找到返回-1 if (highlow) { return -1; } //取中间数 int mid=(low+high)/2; //判断是否找到目标数 if (arr[mid]==target) { return mid; } //目标数在左半边 else if (arr[mid]target) { binary_search(arr,low,mid-1,target); } //目标数在右半边 else { binary_search(arr,mid+1,high,target); } } 用递归算法求出数组的最大最小元素 #include iostream #include string using namespace std; //输出数组中元素 void showArray(int *arr,int len,string msg=数组中的元素为:\n); //找到数组中最大元素 int findMaxOfArr(int * arr,int n); //找到数组中最小元素 int findMinOfArr(int *arr,int n); int main() { int arr[]={12,555,133,143,12,13,7,21,3}; int len=sizeof(arr)/s

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档