算法设计和分析题目和源代码汇编

上传人:我** 文档编号:113828521 上传时间:2019-11-09 格式:DOC 页数:92 大小:431KB
返回 下载 相关 举报
算法设计和分析题目和源代码汇编_第1页
第1页 / 共92页
算法设计和分析题目和源代码汇编_第2页
第2页 / 共92页
算法设计和分析题目和源代码汇编_第3页
第3页 / 共92页
算法设计和分析题目和源代码汇编_第4页
第4页 / 共92页
算法设计和分析题目和源代码汇编_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《算法设计和分析题目和源代码汇编》由会员分享,可在线阅读,更多相关《算法设计和分析题目和源代码汇编(92页珍藏版)》请在金锄头文库上搜索。

1、算法设计与分析题目和源代码1.穷举n位二进制数12.穷举所有排列33.二分查找44.归并排序65.快速排序86.走迷宫97.循环赛日程表118.0-1背包问题119.装载问题1310.堡垒问题1511.8皇后问题1812.素数环问题2113.迷宫问题2314.踩气球2715.字母转换2916.农场灌溉问题3217.求图像的周长3618.电子老鼠闯迷宫4119.跳马4520.独轮车5021.六数码问题5622.找倍数6123.木乃伊迷宫6224.用随机投点法求圆周率PI6825.活动安排6926.数独游戏7127.装盘子7728.子集7829.最长公共子序列8030.防卫导弹8131.田忌赛马8

2、432.计算矩阵连乘积8633.石子合并8834.旅游预算9035.花生米(二)911. 穷举n位二进制数描述输入一个小于20的正整数n,要求按从小到大的顺序输出所有的n位二进制数,每个数占一行。输入输入一个小于20的正整数n。输出按从小到大的顺序输出所有的n位二进制数,每个数占一行。输入样例3输出样例000001010011100101110111#include #include void zhuanhuan(int b);int main ()int j,i,k;long m,n;int temp;scanf(%d,&j);if (j=20)return 0;elsem=pow(2,j)

3、-1;n=(m+1)/2;for (i=0;i=m;i+)for(k=0;kj;k+)temp=ik;if(n&temp)printf(1);else printf(0);printf(n);return 0;2. 穷举所有排列描述输入一个小于10的正整数n,按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。输入输入一个小于10的正整数n。输出按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。输入样例3输出样例abcacbbacbcacbacab#include void sort(int m,int n,char b) int i; char temp;

4、if(m=n-1) for(i=0;in-1;i+) printf(%c,bi); printf(%cn,bn-1); else for(i=m;in;i+) temp=bm; bm=bi; bi=temp; sort(m+1,n,b); temp=bm; bm=bi; bi=temp; int main() void sort(int m,int n,char b); int n,i; char a100; scanf(%d,&n); for(i=0;in;i+) ai=97+i; an=0; sort(0,n,a); return 1; 3. 二分查找描述给定一个单调递增的整数序列,问某个

5、整数是否在序列中。输入第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。输出每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。输入样例51 3 4 7 113369输出样例YesNoNo#include #include void main() int Search(int n,int s,int x); int n; int i; int s10000; int m; int k; int l; int j50000; int h; scanf(%d,&n); f

6、or(i=0;in;i+) scanf(%d,&si); scanf(%d,&m); for (k=0;km;k+) scanf(%d,&jk); for (k=0;km;k+) l=jk; h=Search(n,s,l); if(h=-1) printf(Non); else printf(Yesn); int Search(int n,int s,int x) int low=0,high=n-1; while (lowsmid) low=mid+1; else high=mid-1; return -1; 4. 归并排序描述给定一个数列,用归并排序算法把它排成升序。输入第一行是一个整数n

7、(n不大于10000),表示要排序的数的个数;下面一行是用空格隔开的n个整数。输出输出排序后的数列,每个数字占一行。输入样例53 2 1 4 5输出样例12345#include #define maxsize 10000int a;int bmaxsize;int nmaxsize;void input()scanf(%d,&a); for(int i=0;ia;i+)scanf(%d,&bi);void Merge(int p,int q,int i,int j,int k)int x=j;int y=i;j=j+1;while(i=x&jpj)qy+=pj+;elseqy+=pi+;wh

8、ile(ik)qy+=pi+;while(jx)qy+=pj+;void Msort(int c,int d ,int p,int q) int m;m=(p+q)/2;int emaxsize;if(p=q)dp=cp;elseMsort(c,e,p,m);Msort(c,e,m+1,q);Merge(e,d,p,m,q);void printf()for(int i=0;ia;i+)printf(%dn,ni);void main ()input();Msort(b,n,0,a-1);printf();5. 快速排序描述给定一个数列,用快速排序算法把它排成升序。输入第一行是一个整数n,表示

9、要排序的数的个数;下面一行是用空格隔开的n个整数。输出输出排序后的数列,每个数字占一行。输入样例53 2 1 4 5输出样例12345#includeint a10000;int sqort(int r,int p)int i=r+1,j=p;int temp;while(i=j)while(aiar)j-;if(ij)temp=ai;ai=aj;aj=temp;temp=aj;aj=ar;ar=temp;return j;void quiksqort(int r,int p)if(rp)int q=sqort(r,p);quiksqort(r,q-1);quiksqort(q+1,p);int main()int n,i,j;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai);quiksqort(0,n-1);for(j=0;jn;j+)printf(%dn,aj);return 0;6. 走迷宫描述判断是否能从迷宫的入口到达出口输入先输入两个整数表示迷宫的行数m和列数n,再输入口和出口的坐标,最后分m行输入迷宫,其中1表示墙,0表示空格每个数字之间都有空格。输出若能到达,则输出Yes,否则输出No,结果占一行。输入样例3 30 02

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号