算法C语言实现
hold_on2014
这个作者很懒,什么都没留下…
展开
-
正态分布模拟试验
程序:#include #include #include int heads(){ return rand() < RAND_MAX/2;}int main(){ int i,j,cnt; int N; int M; //掷硬币N次,进行M次试验 //N 32 M 1000 scanf("%d%d",&N,&M); int *f = (int *)malloc原创 2014-02-21 18:55:14 · 1973 阅读 · 0 评论 -
给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数
题目就这么简单。本体首先是求素数ke'y转载 2014-09-18 20:19:18 · 866 阅读 · 0 评论 -
链表的插入排序
示例程序:#include #include typedef struct node* link;struct node{ int item; link next;};int main(){ //创建两个哑节点 不存放数据 struct node heada; struct node headb; headb.next = NULL; int N; int原创 2014-03-18 14:09:33 · 496 阅读 · 0 评论 -
串的处理
首先是getch的妙用:#include "JUDGE.h"int Judge(char ch){ if( (ch>='0'&&ch='a'&&ch='A'&&ch<='Z') ) return 1; else return 0; }/*********************************************函数名称:void Input(char *原创 2014-03-18 15:31:06 · 373 阅读 · 0 评论 -
约瑟夫问题(循环列示例)
程序://约瑟夫问题,用循环链表#include #include typedef struct node* link;struct node{ int item; link next;};int main(){ int N; //N表示有多少人 int M; //M表示计数有多少 int i; int j; scanf("%d%d",&N,&M);原创 2014-03-18 10:30:05 · 482 阅读 · 0 评论 -
链表反转
示例程序:#include #include typedef struct node* link;struct node{ int item; link next;};//链表倒置link reverse(link x){ //保存y的下一个选项 link t; link r = NULL; link y = x; while(y != NULL) {原创 2014-03-18 12:00:50 · 403 阅读 · 0 评论 -
连通性问题
一、慢速并查集对于每个并集运算,要搜索所有的对象,所以速度较慢#include#define N 10000int main(){ int i,p,q,t,id[N]; for(i = 0;i < N;i++) id[i] = i; while(scanf("%d %d",&p,&q) == 2) { if(id[p] == id[q]) continue; e原创 2014-02-19 18:51:47 · 646 阅读 · 0 评论 -
让cpu占用率曲线听你指挥
分析与解法:看一个简单代码:while(true){ if(busy) i++; else}怎么样才能让电脑不做事情呢?当任务管理器报告cpu使用率为0的时候,谁使用cpu?通过任务管理器可以看到,system idle process占用了cpu空闲的时间,操作系统中指出,当程序在等待用户的输入,或者是等待某些事情的发原创 2014-02-18 13:06:26 · 667 阅读 · 0 评论 -
最近点计算(二)
之前的最近点计算,是使用暴力搜索的,所需的时间让人不可接受利用哈希算法,将单位正方形分成一个网格,设置一个链表的二维数组,每个网格正方形对应一个表,选择的网格足够精巧,与已知距离为d之内的所有点或落于统一网格内,或落于邻接网格内!解读:就是将距离哈希化,对应的坐标落在某一个格子里面,每个格子都有一个头指针,存储映射到其内的坐标,相邻的坐标之差都是比1来得小的,所以只需要与周围的98个格子内原创 2014-02-24 13:21:55 · 583 阅读 · 0 评论 -
最近点计算
#include #include #include typedef struct point{ float x; float y;}Point;float randFloat(){ return 1.0*rand()/RAND_MAX;}float distance(Point a,Point b){ return sqrt((a.x - b.x)*(a.x -原创 2014-02-21 19:50:09 · 461 阅读 · 0 评论 -
判断素数的新方法
由上述原理可知,10000以下的素数也可以采取上诉方法,但是最大素数比较难算,干脆就直接列举程序://一个合数可以表示为几个素数的乘积//如果是素数的倍数,那么此数就不是素数//此方法称为素数筛选法#include#define N 10000int main(){ int i; int j; int a[N]; for(i = 2;i < N;i++) a[i]原创 2014-02-21 16:52:09 · 492 阅读 · 0 评论