
算法
文章平均质量分 64
技术博客汇总888
学而不思则罔,思而不学则殆...
展开
-
经典算法11:任意长度整数加法
#include #include #include #define STACK_INIT_SIZE 20 #define STACKINCREMENT 10 /*定义堆栈*/ typedef char ElemType; typedef struct{ ElemType *base; ElemType *top; int stacksize;原创 2013-06-27 21:08:59 · 3063 阅读 · 0 评论 -
纯C语言:分治快速排序源码
#includevoid fun(int array[],int low,int high){ int i = low; int j = high; int temp = array[i]; while(i < j) { while((array[j] >= temp) && (i < j)) { j--;原创 2014-01-02 00:20:06 · 3100 阅读 · 0 评论 -
纯C语言:检索与周游遍历源码
#include#include#define Max 20typedef struct Node{ int num; struct Node *next;}Node;Node G[Max];int visited[Max];void Creategraph(int n,Node G[]){ int i,e,j; Node *p,*q; for(i=0;i<n;i++)原创 2014-01-02 00:13:26 · 1231 阅读 · 0 评论 -
纯C语言:检索与周游广度深度遍历源码
#include typedef int datatype; /*假定线性表元素的类型为整型*/#define maxsize 1024 /*假定线性表的最大长度为1024*/# define n 100 /* 图的顶点最大个数 */typedef char VEXTYPE; /* 顶点的数据类型 */typedef float ADJTYPE;原创 2014-01-02 00:17:07 · 8408 阅读 · 0 评论 -
纯C语言:检索与周游广度遍历源码
#include#include#define Max 20typedef struct Node{ int num; struct Node *next;}Node;Node G[Max];int visited[Max];int Q[Max];int front=0,rear=0;bool emptyQueue(int Q[]){ if(rear ==fron原创 2014-01-02 00:18:23 · 8396 阅读 · 0 评论 -
纯C语言:分治检索源码
#include void main(){ int array[10]; printf("输入五个数字:\n"); for(int i=0;i<10;i++) { printf("第%d个数",i+1); scanf("%d",&array[i]); } int n; printf("输入要检索的数字:%d",n); int low=0; int height=10;原创 2014-01-02 00:22:04 · 772 阅读 · 0 评论 -
纯C语言:分治假币问题源码
#include#includeint get_false_coin(int coin[],int low,int high){ int i,sum1=0,sum2=0,sum3=0; if(low==high-1) { if(coin[low]<coin[high]) return low; else return high; } if((high-low+原创 2014-01-03 00:04:21 · 12307 阅读 · 0 评论 -
纯C语言:递归组合数源码
#includeint sum(int m,int n){ if(n==m||n==0) return 1; else return sum(m-1,n)+sum(m-1,n-1);}void main(){ int m,n; printf("请输入组合数中的m:"); scanf("%d",&m); printf("\n请输入组合数中的n:"); scanf("%原创 2014-01-03 00:07:40 · 4580 阅读 · 1 评论 -
纯C语言:递归小写转大写源码
#includechar upper(char c){ return c-32;}void fun(char str[],int n,int i){ if(i<n) printf("upper(str[n-i-1]),str[i]");}void main(){ printf("输入一串小写字母(用空格隔开):\n"); scanf("%c\n",str[n]); c原创 2014-01-03 00:08:49 · 884 阅读 · 0 评论 -
纯C语言:从字符串中找整数
#includeint getInt(char string[],int num[]);void main(){ char string[100]; int number=0,i; int num[50]; printf("输入任意的字符串: "); gets(string); number=getInt(string,num); for(i=0;i<number;i++)原创 2014-01-03 00:10:12 · 2758 阅读 · 0 评论 -
纯C语言:递归最大数源码
#includeint Getmax(int arr[n]){ for(int i=0;i<n,i++) { if(n==0) return arr[0]; else { arr[0]=arr[0]>Getmax(arr[]+1,n-1)?arr[0]:Getmax(arr[]+1,n-1); return arr[0]; } }}void mai原创 2014-01-03 00:06:39 · 1135 阅读 · 0 评论 -
纯C语言:40磅砝码称重源码
#includeint get(int weight,int i,int j,int k,int l){ int p1,p2,p3,p4; for(p1=-1;p1<=1;p1++) { for(p2=-1;p2<=1;p2++) { for(p3=-1;p3<=1;p3++) { for(p4=-1;p4<=1;p4++) { if(i*p原创 2014-01-03 00:11:38 · 2392 阅读 · 0 评论 -
纯C语言:21根火柴源码
#includevoid main(){ int i=1,j=1; printf("能取的方案如下:\n"); for(i>=1;i<=4;i++) { if(j>=1) { j=5-i; printf("当人先取%d,则计算机取%d\n",i,j); } } printf("因共21根,最后剩下一根,故计算机为常胜将军\n");}原创 2014-01-03 00:12:36 · 3118 阅读 · 0 评论 -
纯C语言:递归二进制转十进制源码
#include#includeint change(int n,int *sum,int *m)//n为第n位,m总位数{ char c; if(c!='#') { *m=*m+1; change(n+1,sum,m); } if(c=='#') { return *sum=int(*sum+pow(2,*m-n)); }}void main(){ cha原创 2014-01-03 00:02:56 · 2065 阅读 · 1 评论 -
纯C语言:分治查找第K个最小元素源码
#includevoid fun(int array[],int low,int high){ int i = low; int j = high; int temp = array[i]; while(i < j) { while((array[j] >= temp) && (i < j)) { j--;原创 2014-01-03 00:05:30 · 2988 阅读 · 0 评论 -
纯C语言写的判断回文数
#include#includeint is_palindrome(char* para_str , int len);int main(int argc , char* argv[]){ int n = atol(argv[2]); if (is_palindrome(argv[1],n)) printf("this string is palindro原创 2013-12-21 08:31:44 · 1439 阅读 · 0 评论 -
纯C语言:检索与周游加减乘除24源码
#includechar op[5]={'#','+','-','*','/'};float cal(float x,float y,int op){ switch(op) { case 1:return x+y; case 2:return x-y; case 3:return x*y; case 4:return x/y; }}float mo原创 2014-01-02 00:15:01 · 1276 阅读 · 0 评论 -
纯C语言:贪心Kruskal算法生成树源码
#include #define Max 100typedef struct{ int u; int v; int weight;}edge;edge edges[Max];int nodes[Max];void interchange(edge* m,edge* n){ edge temp=*m; *m=*n; *n=temp;}int原创 2014-01-01 15:32:25 · 1502 阅读 · 0 评论 -
经典算法10:回溯法求解八皇后
八皇后问题:在8*8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。思路:简单的说就是 从当前列中依次选取位置,与前面列中选取的位置进行比较,判断是否冲突,若冲突,回溯到上一列寻找,否则进入下一列寻找位置 1、从column=0列中选取一个位置,column+1,转到2。(这里column为当前列 值为0~7),原创 2013-06-27 14:33:55 · 8901 阅读 · 0 评论 -
经典算法8:检索与周游之广度和深度优先遍历图
#include typedef int datatype; /*假定线性表元素的类型为整型*/#define maxsize 1024 /*假定线性表的最大长度为1024*/# define n 100 /* 图的顶点最大个数 */typedef char VEXTYPE; /* 顶点的数据类型 */typedef float ADJTYPE;原创 2013-06-27 14:01:04 · 1518 阅读 · 0 评论 -
经典算法7:动态规划之多段图
一.实验要求1. 理解最优子结构的问题。有一类问题的活动过程可以分成若干个阶段,而且在任一阶段后的行为依赖于该阶段的状态,与该阶段之前的过程如何达到这种状态的方式无关。这类问题的解决是多阶段的决策过程。在50年代,贝尔曼(Richard Bellman)等人提出了解决这类问题的“最优化原理”,从而创建了最优化问题的一种新的算法设计方法-动态规划。对于一个多阶段过程问题,是否可以分段实现原创 2013-06-27 13:32:24 · 10642 阅读 · 1 评论 -
经典算法6:贪心算法解决部分背包问题
所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。 贪心算法的基本思路如下: 1.建立数学模型来描述问题。 2.把求解的问题分成若干个子问题。 3.对每一子问题求解,得原创 2013-06-27 13:11:16 · 1958 阅读 · 0 评论 -
经典算法5:用分治法实现元素选择
用分治法实现元素选择所用函数:在该程序中总共用了六个函数: 1、两个数的交换函数swap( ); 2、对一个数组进行划分函数partition(int a[],int p,int r,int x); 3、快速排序函数 void quicksort(int a[],int p,int r); 4、选择第k小数的函数int select(int a[],in原创 2013-06-27 11:47:29 · 1945 阅读 · 0 评论 -
经典算法4:分治法求解快速排序
简介:归并排序将整个集合问题分解为最小单元,将该单元n1内的内容全部排序,然后将相邻的单元n1,n2重新排序。如果将n1,n2看做一个整体n的话,则针对n,先对其一半进行排序,另一半排序,然后整体再次排序。符合我们一般的做事习惯,将大问题都分解为小问题,针对小问题逐一解决,最终解决掉整个问题,最先解决的是小问题,最后大问题迎刃而解。 而快速排序似乎反其道而行之,从一开始就将整个单元n进行粗原创 2013-06-27 11:09:03 · 1460 阅读 · 0 评论 -
经典算法3:分治法求解归并排序
/*分治法——归并排序 * 二路归并排序的分治策略是:(1)划分:将待排序序列r1, r2, …, rn划分为两个长度相等的子序列r1, …, rn/2和rn/2+1, …, rn;(2)求解子问题:分别对这两个子序列进行排序,得到两个有序子序列;(3)合并:将这两个有序子序列合并成一个有序序列。 */public class MergeSort { /** *原创 2013-06-27 11:03:14 · 972 阅读 · 0 评论 -
经典算法2:递归求解整数划分
问题描述:将正整数n表示成一系列正整数的和,n=n1+n2+……+nk,返回划分的方法数。比如:6的整数划分为11种 最大数 6 6 5 5 + 1 4 4 + 2, 4 + 1 + 1 3 3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1原创 2013-06-27 10:47:26 · 1620 阅读 · 0 评论 -
经典算法1:递归求解汉诺塔
题型分析:算法:当只有一个盘子的时候,只需要从将A塔上的一个盘子移到C塔上。 当A塔上有两个盘子是,先将A塔上的1号盘子(编号从上到下)移动到B塔上,再将A塔上的2号盘子移动的C塔上,最后将B塔上的小盘子移动到C塔上。 当A塔上有3个盘子时,先将A塔上编号1至2的盘子(共2个)移动到B塔上(需借助C塔),然后将A塔上的3号最大的盘原创 2013-06-27 10:37:51 · 1061 阅读 · 0 评论 -
纯C语言:贪心Prim算法生成树问题源码
#include #define MAX 100#define MAXCOST 100000 int graph[MAX][MAX]; int Prim(int graph[MAX][MAX], int n){ /* lowcost[i]记录以i为终点的边的最小权值,当lowcost[i]=0时表示终点i加入生成树 */ int lowcost[MAX]; /* mst[i原创 2014-01-01 15:31:14 · 1325 阅读 · 0 评论 -
纯C语言:谈心会议安排源码
#includestruct Object{ int ObjectId; int ObjectStart; int ObjectFinish;}obj[11];void Sort(Object obj[],int n){ int j; Object temp; int i; for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++)原创 2014-01-01 15:28:29 · 1453 阅读 · 0 评论 -
纯C语言:贪心部分背包问题源码
#includestruct Bag{ int BagID; int BagWeight; int BagPrice; int SinglePrice; float Num;};void seekBest(Bag bag[],int n,float bagRL){ int i; float BRL=bagRL; for(i=0;i<n;i++) { bag[i]原创 2014-01-01 15:29:39 · 13182 阅读 · 0 评论 -
纯C语言:括号匹配源码
#include #include #define STACK_INIT_SIZE 20#define STACKINCREMENT 10typedef char ElemType;typedef struct{ ElemType *base; ElemType *top; int stacksize; }sqStack; /*初原创 2014-01-01 15:33:24 · 8418 阅读 · 0 评论 -
纯C#电子相册开发序列之一
首先申明一下,本项目完全采用C#语言开发!第一张图:特效预览第二张图片:相片编辑界面:第三张图片:版本生成界面:第四张图片:图片详细编辑界面第五张图片:大头贴拍照功能第六张:相框显示页面第七张图片:幻灯片预览界面主要界面也就是这几张,具体的实现功能,将在以后有时间原创 2014-04-12 18:31:56 · 4673 阅读 · 4 评论