摘要: 题意:求从数字1到数字N的连续自然数的排列中第M小的数,要求产生的数字序列不允许出现重复的数字。刚开始有点看懵了了啊==!就把它放弃了,无语。。。其实就是简单的求N个数全排列,顺着数第M个就是了,泪奔了啊,以后不能这么二了==!View Code #include <stdio.h>#include <string.h>#define MAXN 10001int n, m, num, sign;void find(int len, int *a, bool *visit){ int i; if(sign) { return ; } if(len > ... 阅读全文
posted @ 2011-12-02 21:48 1050768624 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 题意:求N个数中出现次数大于等于(N+1)/2的数。因为N是奇数,所以也就是求出现次数一半以上的数。定义变量ans=第一个数、time=1,向后循环如果和ans相等time++,否则time--,当tine减到0时说明ans中的数在整体中出现的次数一定不多于一半,将ans赋为当前值继续循环。View Code #include<stdio.h>int main(){ int n; while(scanf("%d", &n) != EOF) { int num, time = 0, ans; while(n--) { ... 阅读全文
posted @ 2011-12-02 20:44 1050768624 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 题目大意:基因工程,给你两段基因序列,给定任意两个字符间的相似度,可以根据需要插入减号(-)与字符匹配,求这两段基因序列的最大相似度。算法分析:一道dp题,类似于求两个字符串的编辑距离,主要找到状态转移方程:f[i][j] = Max(f[i][j - 1] + Match('-', s2[j]), f[i - 1][j] + Match('-', s1[i]), f[i - 1][j - 1] + Match(s1[i], s2[j]));View Code /*dp题状态转移方程:f[i][j] = Max(f[i][j - 1] + Match(' 阅读全文
posted @ 2011-12-02 19:58 1050768624 阅读(224) 评论(0) 推荐(0) 编辑