算法与结构
文章平均质量分 51
TD_时缔
请叫我时缔!
我用代码筑写青春!
只为做一个时代缔造者!
展开
-
第7周 数据结构与算法分析 2-11 高效率取幂运算
问题及代码:/*计算X的N次幂的算法,高效取幂运算*/long int Pow(long int X,unsigned int N) //算法核心思想:使用N-1次乘法自乘; { if(N==0) return 1; if(N==1) return X; //本步骤可省略,效果一样 if(IsEven(N)) //IsEven()是哪个库函原创 2016-05-11 22:42:35 · 381 阅读 · 0 评论 -
第12周 数据结构和算法 线性表-5 栈-压入和弹出运算
问题及代码:// 压入、弹出两个操作的时间复杂度均为:常量级 // PushStack(S,x)将元素压入栈 PushStack(S,x) { int m; //m为最大容量; if(top = m) Error(); //栈已满 else { top = top+1; S[top] = x; //将x存入栈顶位置原创 2016-06-19 11:09:16 · 930 阅读 · 0 评论 -
第12周 数据结构和算法 线性表-5 栈-栈完成进制转换及应用
问题及代码:// 用栈完成进制转换 10转8 change(num) { top = 0; do { top = top+1; Stack[top] = num%8; //余数进栈 num = num/8; } while(num !=0); do { printf("%d",Stack[top]);原创 2016-06-19 11:56:40 · 554 阅读 · 0 评论 -
第12周 数据结构和算法 线性表-7 队列 插入、删除
问题及代码:// InQueue().cpp 循环队列的插入InQueue(Q,x) //在队列Q中插入元素x { if((rear+1)%m==front) Error(); //队列满上溢 else { rear = (rear+1)%m; Q[rear] =x; } } // OutQueue().cpp 循环队原创 2016-06-19 19:39:26 · 635 阅读 · 0 评论 -
第12周 数据结构和算法 线性表-8 单链表的定义及初始化
问题及代码:// 单链表的类型定义如下 typedef struct Node { int date; struct Node *next; //定义指针域 }*Pointer; Initial(Head) //初始化一个单链表 { // 创建一个带头结点的空链表, head为指向头结点的指针 head =原创 2016-06-19 19:41:32 · 860 阅读 · 0 评论 -
第13周 数据结构(上海交大) 5-3 前m与后n个元素整体互换
问题及代码:void exchangel(SqList &L,int m,int n) { //线性表分成两个部分后,两部分倒置 Reverse(L,0,m-1); Reverse(L,m,m+n-1); Reverse(L,0,m+n-1); } void Reverse(SqList &A,int j,int k) { //将线性表A,下标从j原创 2016-06-20 20:59:39 · 2240 阅读 · 0 评论 -
第13周 关于二叉树的遍历方法
问题及答案://链式结构typdef struct _BiTNode { int date; _BiNode *lchild; _BiNode *rchild; }BitNode,*pBiTTree;//创建二叉树,先序顺序int CreatBiTree(pBiTree *root) { char ch = 0; fflush(stdin);转载 2016-06-23 15:14:58 · 704 阅读 · 0 评论 -
第13周 最好的A*算法
如此好贴,不能不转!原文地址:http://dev.gameres.com/Program/Abstract/Arithmetic/AmitAStar.mht本文版权归原作者、译者所有,我只是转贴;如果侵害到您的权益,请联系我,我将删除本文。基本上,这文章可以说是最佳A*算法文档。极力推荐!Amit's A star Page中译文 译序这篇文章很适合A*算法的初学者,可惜转载 2016-06-23 18:23:53 · 1832 阅读 · 0 评论 -
第17周 啊哈算法 图的遍历算法(不牵涉距离)
问题及代码:/*深度优先搜索算法遍历图的各个顶点*/#includeint n,sum,book[101];int e[101][101];void dfs(int cur) { int i; printf("%d",cur); sum++; if(sum==n) return; for(i=1;i<=n;i++) { if(原创 2016-07-20 09:42:32 · 911 阅读 · 0 评论 -
第17周 啊哈算法 图的遍历算法(深度优先)
问题及答案:#includeint min=999999,n;int e[101][101];int book[101];void dfs(int cur,int dis) { int i; if(dis>min) return; if(cur==n) { if(dis<min) min=dis; return; }原创 2016-07-20 09:27:31 · 1279 阅读 · 0 评论 -
第17周 啊哈算法 图的遍历算法-最少转机
问题及代码:/*广度优先搜索算法-最少转机*/#includestruct note { int x; //城市编号 int s; //转机次数 };int main() { int i,j,n,m,a,b,cur,e[51][51]={0},book[51]={0},head,tail; int start,end,flag=0; struct no原创 2016-07-20 11:04:13 · 1617 阅读 · 0 评论 -
第17周 啊哈算法 图的遍历算法-Floyd多源最短路径算法
问题及代码:/*Floyd-Warshall算法 佛洛依德-沃舍尔*/#includeint main() { int i,j,k,n,m; int e[10][10]; int t1,t2,t3; int inf=99999999; //如果有100条边,则正无穷只需用10001表示,就比10000多1即可。 scanf("%d,%d",&n,&m);原创 2016-07-20 12:56:10 · 936 阅读 · 0 评论 -
图的邻接表存储 c实现
转载:http://blog.csdn.net/linxinyuluo/article/details/6847851 用到的数据结构是一个是顶点表,包括顶点和指向下一个邻接点的指针一个是边表, 数据结构跟顶点不同,存储的是顶点的序号,和指向下一个的指针刚开始的时候把顶点表初始化,指针指向null。然后边表插入进来,是插入到前一个,也就是直接插入到fir转载 2016-07-20 16:55:49 · 955 阅读 · 0 评论 -
最短路径—Dijkstra算法和Floyd算法
转载:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html注意:以下代码 只是描述思路,没有测试过!! Dijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结转载 2016-07-21 11:17:42 · 1146 阅读 · 0 评论 -
第12周 数据结构和算法 线性表-2 插入、删除、定位运算
问题及代码://线性表的存储结构,三种运算 // 插入运算 void InsertSql(Linear_list L,int &n,int i,ElemType x){ if (i(n+1)) error("插入的值非法"); else for(j=n;j<=i;j--) { L[j+1] = L[j]; //插入的位置后移 L[i]= x; /原创 2016-06-19 09:45:25 · 938 阅读 · 0 评论 -
第16周 啊哈算法 水管工铺设管道
问题及代码:/*水管工:铺设管道*/ #includeint a[50][51];int book[50][50];int n,m,flag;void dfs(int x,int y,int front) { int i; if(x==n && y==m+1) { flag==1; return; }原创 2016-07-13 17:38:56 · 1094 阅读 · 1 评论 -
第7周 数据结构与算法分析 2-8求最大子序列的函数
问题及代码:/*求最大序列的函数*/#includeint Maxsubsequencesum(const int A[],int N){ int Thissum; int i,j; int Maxsum=0; for(i=0;i<N;i++) Thissum=0; for(j=1;j<N;j++) { Thissum+=A[j];原创 2016-05-11 22:04:42 · 281 阅读 · 0 评论 -
第16周 啊哈算法 火柴棍等式
问题及代码:/*m<=24根火柴棍,求可以构造出多少个满足A+B=C的等式,其中=和+各需2根火柴棍*/#includeint fun(int x) { int f[10]={6,2,5,5,4,5,6,3,7,6}; int sum=0; while(x/10!=0) //x至少是十位数及以上 { sum+=f[x%10]原创 2016-07-11 14:46:52 · 1661 阅读 · 0 评论 -
第15周 啊哈算法 排序算法
问题及答案:/*分数低到高的排序算法*/#includeint main(){ int a[11]; int i,j,t; for(i=0;i<=10;i++) a[i]=0; //初始化为0 for(i=0;i<5;i++) { scanf("%d",&t); a[t]++; //计数,表示输入的值出现的个数(这里的值是在0-1原创 2016-07-07 10:33:56 · 443 阅读 · 0 评论 -
第15周 啊哈算法 冒泡排序算法
问题及代码:/*冒泡排序:邻居互换,进行n-1趟,每趟比较n-i次*/#includeint main(){ int a[1000]; int i,j,n,t; scanf("%d",&n); //输入一个数n,表示接下来有n个数 for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n-1;i++) //n个原创 2016-07-07 11:14:34 · 461 阅读 · 0 评论 -
第15周 啊哈算法 队列
问题及答案/*队列算法:队首删掉,第二个数放队尾,反复直到最后*/#includeint main(){ int a[100]={0,6,3,1,7,5,8,9,2,4}; int head,tail,i,n; //初始化队列 head=1; tail=10; while(head<tail)//循环条件是队列不为空 { printf("%d"原创 2016-07-08 10:56:31 · 431 阅读 · 0 评论 -
第15周 啊哈算法 队列和栈的实例:纸牌游戏
问题代码:/*队列和栈的应用功能:小哼和小哈打牌,判断哪方获胜,并求手中牌和桌中牌*/#includestruct queue { int date[100]; int head; int tail; };struct stack { int date[10]; int top; };int main() { struct queu原创 2016-07-09 15:03:23 · 955 阅读 · 0 评论 -
第15周 啊哈算法 链表:用指针链表和数组模拟链表
问题及代码:#include#includestruct node { int date; struct node *next; }; int main() { struct node *head,*p,*q,*t; int i,a,n; head=NULL; scanf("%d",&n); for(i=1;i<=n;i原创 2016-07-09 16:32:54 · 1295 阅读 · 0 评论 -
第16周 啊哈算法 深度优化搜索算法
问题及代码:/*深度优化搜索算法*/ #includeint a[10],book[10],n;//book是标记void dfs(int step) { int i; if(step==n+1) //站在n+1的位置,表明n个盒子已经放好牌了 { for(i=1;i<=n;i++) printf("%d",a[i]);原创 2016-07-11 16:34:00 · 1133 阅读 · 0 评论 -
第16周 啊哈算法 深度优化搜索应用(最短路径算法)
问题及代码:/*求最短路径算法用途:可用于交通系统、营救最优路径 */ #includeint n,m,p,q,min=999999;int a[50][51],book[50][51];void dsf(int x,int y,int step) { //下一步四个方向的数组 int next[4][2]={(0,1), (原创 2016-07-12 09:27:26 · 856 阅读 · 0 评论 -
第15周 啊哈算法 快速排序算法
问题及代码:/*快速排序算法:从右边高位开始找,再从左边开始,直到相遇与基数对换,然后递归循环调用*/#includeint a[101],n;void quicksort(int left,int right) { int i,j,t,temp; if(left>right) //为何需要这句 return; temp=a[left];原创 2016-07-07 14:44:51 · 473 阅读 · 0 评论 -
第15周 啊哈算法 栈
问题及代码:/*栈:回文检测*/#includeint main(){ int a[101],s[101]; int i,top,len,next,mid; gets(a); len=strlen(a); mid=len/2-1; top=0; for(i=0;i<=mid;i++) s[++top]=a[i]; //判断字符串长度原创 2016-07-08 11:32:06 · 547 阅读 · 0 评论 -
第16周 啊哈算法 炸弹人(两种算法注意对比)
问题及代码:/*炸弹人:计算出哪个位置的炸弹能炸到最多的人(本题有例外情况,需要优化) */#includeint main(){ char a[20][21]; int i,j,sum,map=0,p,q,m,n,x,y; scanf("%d %d",&n,&m);//n表示行字符数 for(i=0;i<=n-1;i++) scanf("%s",原创 2016-07-11 15:46:02 · 3415 阅读 · 1 评论 -
第16周 啊哈算法 宝岛探险(下落到某一点求宝岛面积)
问题及代码:/*宝岛探险:求岛屿的面积*/ #includestruct note { int x; int y; };int main() { struct note q[100]; int a[10][10]; int book[10][10]; int i,j,k,tx,ty,n,m,mx,my,startx,starty,su原创 2016-07-12 18:19:07 · 811 阅读 · 0 评论 -
第17周 啊哈算法 图的遍历算法-Dijkstra单源最短路径算法
问题及代码:/*Dijkstra算法,即单源最短路径算法:通过边实现松弛*/ #includeint main() { int i,j,n,m,u,v,t1,t2,t3,min; int dis[10]; int e[10][10]; int book[10]; int inf=99999999; scanf("%d %d",&n,&m);原创 2016-07-20 16:16:06 · 1038 阅读 · 0 评论