摘要: 函数名: strchr 功 能: 在一个串中查找给定字符的第一个匹配之处\ 用 法: char *strchr(char *str, char c); #include <string.h> #include <stdio.h> int main(void) { char string[15]; char *ptr, c = 'i'; strcpy(string, "This is a string"); ptr = strchr(string, c); if (ptr) printf("The character %c i 阅读全文
posted @ 2012-04-13 09:36 加拿大小哥哥 阅读(618) 评论(0) 推荐(0) 编辑
摘要: 最长公共子序列是一个十分实用的问题,它可以描述两段文字之间的“相似度”,即它们的雷同程度,从而能够用来辨别抄袭。对一段文字进行修改之后,计算改动前后文字的最长公共子序列,将除此子序列外的部分提取出来,这种方法判断修改的部分,往往十分准确。简而言之,百度知道、百度百科都用得上。算法 动态规划的一个计算两个序列的最长公共子序列的方法如下: 以两个序列 X、Y 为例子: 设有二维数组 f[i,j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,则有: f[1][1] = same(1,1); f[i,j] = max{f[i-1][j -1] + same(i,j),f... 阅读全文
posted @ 2012-04-13 09:06 加拿大小哥哥 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 会场安排问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。输入第一行是一个整型数m(m<100)表示共有m组测试数据。 每组测试数据的第一行是一个整数n(1<n<10000)表示该测试数据共有n个活动。 随后的n行,每行有两个正整数Bi,Ei(0<=Bi,Ei<10000),分别表示第i个活动的起始与结束时间 阅读全文
posted @ 2012-04-12 23:27 加拿大小哥哥 阅读(742) 评论(0) 推荐(0) 编辑
摘要: 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现 至少会有一个抽屉里面放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代 表一个元素,假如有n+1或多于n+1个元素放到n个集合中去,其中必定至少有 一个集合里有两个元素。” 抽屉原理有时也被称为鸽巢原理(“如果有五个鸽 子笼,养鸽人养了6只鸽子,那么当鸽子飞回笼中后,至少有一个笼子中装有2 只鸽子”)。它是组合数学中一个重要的原理。第一抽屉原理 原理1 把多于n个的物体放到n个抽屉里,则至少有一个抽屉里的东西不少 于两件; 抽屉原理[证明](反证法):如果. 阅读全文
posted @ 2012-04-12 22:47 加拿大小哥哥 阅读(479) 评论(0) 推荐(0) 编辑
摘要: //题目很简单#include<stdio.h>int main(){int a,b;while(scanf("%d%d",&a,&b)!=EOF){int i,temp;int odd=0,even=0;if(a>b){temp=a;a=b;b=temp;}for(i=a;i<=b;i++){if(i%2==1){odd=odd+i*i*i;}else{even=even+i*i;}}printf("%d %d\n",even,odd);}return 0;} 阅读全文
posted @ 2012-04-12 17:59 加拿大小哥哥 阅读(197) 评论(0) 推荐(0) 编辑
摘要: BFS一般是不会用递归的,而且很不好实现,因为是采用队列机制,而不是栈机 制。但是恰恰好的,递归就是栈机制,所以递归其实就是DFS是栈机制啊,DFS就是栈机制你要是不用递归,也可以实现DFS,但是要用到栈递归只是使用了一个自动的栈机制火星十一郎设R= {r1,r2,r3,……,rn}是要进行排列的n个元素,Ri=R-{ri}。集合X中的元 素的全排列记为perm(X).(ri)perm(X)表示在全排列perm(X)的每一个排列前加 上前缀ri得到的排列,R的全排列可归纳定义如下:当n=1,perm(R) = (r) ,其中r是集合R中唯一的元素。当n>1,perm(R)由(r1)per 阅读全文
posted @ 2012-04-12 17:19 加拿大小哥哥 阅读(352) 评论(3) 推荐(0) 编辑
摘要: 算法过程 1,从任意一条单边路径开始。所有两点之间的距离是边的权,或者无穷大,如果两 点之间没有边相连。 2,对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比己 知的路径更短。如果是更新它。Floyd算法适用于APSP(All Pairs Shortest Paths),是一种动态规划算法,稠密图效果 最佳,边权可正可负。此算法简单有效,由于三重循环结构紧凑,对于稠密图,效率要高 于执行|V|次Dijkstra算法。改进和优化 用来计算传递封包。 计算闭包只需将Floyd中的f数组改为布尔数组,将加号改为and就可以了。#include<stdio. 阅读全文
posted @ 2012-04-12 08:56 加拿大小哥哥 阅读(426) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int main(){ int a[4][5],i,j,i1,j1=0,max,s=1; /*i和j是行和列的循环变量,i1和j1是 一行中横向最大值所在的行标和列标,s是鞍点是否存在的标示量*/ for(i=0;i<=3;i++) { for(j=0;j<=4;j++) scanf("%d",&a[i][j]); } printf("输入的数组:\n"); for(i=0;i<=3;i++) { for(j=0;j<=4;j++) printf("%5d" 阅读全文
posted @ 2012-04-11 22:50 加拿大小哥哥 阅读(756) 评论(0) 推荐(0) 编辑
摘要: 1.判断三点顺序实际可以用三角形有向面积好久才想到,或者说运用| 1 xA yA |Area (A,B,C)=| 1 xB yB | | 1 xC yC |以及另一个公式Area (A,B,C)=| xB-xA yB-yA | | xC-xA yC-yA |试验下,是否为二倍面积,顺序是否为负三角形向量及面积分配定理定理内容 由三角形内一点I向三顶点ABC形成向量将三角形面积分配为a:b:c,则有:aIA+bIB +cIC=0向量(abc为角a角b角c所对小三角形所占比)。aIA+bIB+cIC=0(加重为向量标示)(a b c 可负,代表三角形外三角形) 阅读全文
posted @ 2012-04-11 22:09 加拿大小哥哥 阅读(619) 评论(0) 推荐(0) 编辑
摘要: 1.康托展开的解释康托展开就是一种特殊的哈希函数 把一个整数X展开成如下形式: X=a[n]*n!+a[n-1]*(n-1)!+...+a[2]*2!+a[1]*1! 其中,a为整数,并且0<=a<i,i=1,2,..,n {1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。 代表的数字 1 2 3 4 5 6 也就是把10进制数与一个排列对应起来。 他们间的对应关系可由康托展开来找到。 如我想知道321是{1,2,3}中第几个大的数可以这样考虑 : 第一位是3,当第一位的数.. 阅读全文
posted @ 2012-04-11 21:36 加拿大小哥哥 阅读(6541) 评论(2) 推荐(4) 编辑