clock():捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick ,即“时钟打点”。
常数CLK_TCK:机器时钟每秒所走的时钟打点数。
1 #include <stdio.h>
2 #include <time.h>
3
一、树的遍历操作
树的遍历:从根节点出发,按照某种次序访问树中所有结点,使得每个结点被访问一次且仅被访问一次。
遍历的实质为将树结构(非线性结构)转换为线性结构。
树通常有前序(根)遍历、后序(根)遍历和层序(次)遍历三种方式。
前序遍历:
树的前序遍历
1.for循环实现
1 #include <stdio.h>
2 #include <time.h>
3
4 clock_t start, stop;
5 double duration;
6
7 void printfN();
8
9 int ma
[Uva10294]Arif in Dhaka
标签: 置换 Burnside引理
题目链接
题意
有很多个珠子穿成环形首饰,手镯可以翻转和旋转,项链只能旋转。(翻转过的手镯相同,而项链不同)
有n个珠子,k种颜色,输出不同的项链和手镯的个数。
题解
先考虑旋转的置换:
假如旋转i颗珠子,那么显然产
[Poj3128]Leonardo's Notebook
标签: 置换
题目链接
题意
给你一个置换(B),让你判断是否有一个置换(A)使得(B=A^2)。
题解
置换可以写成循环的形式,所以我们不妨来研究循环平方的特性。
对于一个奇数长度的循环[(a_1 a_2 a_3 a_4 ...... a_
选择排序:顾名思义选择,选择排序属于O(N^2)的排序算法,意思就是选择数组中的最小的拿出来放在第一位,然后再剩下的数里面,选择最小的,排在第二位,以此类推。
例如:8 3 4 5 6 2 1 7
第一次:寻找数组中最小的数1,然后和8替换,得到 1 3 4 5 6 2 8 7
第二次
半年之前,第一次接触到这种将函数作为参数传递的做法,当时实在觉得难以理解。
PHP 的变量真的是啥都能装,不管函数还是类,这个真的是灵活到飘逸
Luogu 1514 引水入城 (搜索,动态规划)
Description
在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个N行M列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度。
为了使居民们都尽可能饮用到清澈的湖水,
一,算法介绍
在CS124课程的第一周提到 求解两个字符串相似度的算法---Minimum Edit Distance(最短编辑距离)算法。该算法在NLP(自然语言处理)中也会用到。
如何定义相似度呢?任给两个字符串X 和Y,使用以下三种操作将 字符串X 变到 字符串Y :①插入(Insert)操
[Uva10601]Cubes
标签: 置换 burnside引理
题意
给你12跟长度相同的小木棍,每个小木棍有一个颜色。统计他们能拼成多少种不同的立方体。旋转后相同的立方体认为是相同的。
题解
这道题难就难在他不告诉你正方体是怎么旋转的,所以只要把这个想清楚了这道题就不是很难。
有三种旋转方式:
A. Odds and Ends
Source
http://codeforces.com/contest/849/problem/A
Description
Where do odds begin, and where do they end? Where does hope emerge,
这道题首先设定一个二维数组,第一层是字符串,第二层则用于表示对应字符。如果是字母,则为0,如果是数字,则会根据数字出现的次数,依次加一。
之后根据这个二位数组就可以很容易的计算出所要的结果。
示例代码如下:
1 #include<stdio.h>
2 #include<str
1 #include<stdio.h>
2 #include<string.h>
3 #define maxn 90
4 char s[2][maxn];
5 int main()
6 {
7 int T=0;
8 scanf("%d",&
1. 如果一个链表结点数大于等于2,把首节点变为尾结点
status A(LinkList L){ //L是无头结点的单链表
if(L&&L->next){
Q=L; P=L->next;
while(P->next) {P=P-&g
传送门
给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数。
对于100%的数据,1<=n<=50000,保证所有的
题目就不再描述了。
最大连续子序列和问题是个很老的面试题了,最佳的解法是O(N)复杂度。最近再次遇到的时候却不能很清楚地写出来,所以在此记录一下。
def FindGreatestSumOfSubArray(self, array):
res = max(array)
curren
《伤脑筋十三块》,十三块大小形状不同,组成一个8*8的正方形,编程列出尽可能多的解法。
下面四种是我的程序跑出来的。
数据结构与算法--最短路径之Floyd算法
我们知道Dijkstra算法只能解决单源最短路径问题,且要求边上的权重都是非负的。有没有办法解决任意起点到任意顶点的最短路径问题呢?如果用Dijkstra算法,可以这样做:
Dijkstra[] all = new Dijkstra[graph.verte
1 import java.util.Arrays;
2 import java.util.Comparator;
3
4 public class MySort {
5
6 public static void main(String[] args) {
7
二分查找法又叫折半查找法,通过给定一个数,然后把这个数和数组中的中间值进行比较。
重要理解mid,min,max索引的变化就ok了!
原理:当要查找的数(key)比中间值(arr[mid])要小的时候,max就要=mid-1,当要查找的数(key)比中间值 (arr[mid