摘要: 题目链接:http://poj.org/problem?id=2013 设长度非递减的字串序列为s[1]...s[n]。设计递归子程序print(n),其中n为字串序号,每分析1个字串,n=n-1。 n = 0 为边界。字串s为局部变量: 先输入和输出当前组的第1个字串s,n = n - 1;若n > 0,则输入当前组的第2个字符s,n = n - 1。若n > 0,则通过递归调用print(n)将字串s入栈。回溯过程相当于栈顶字串s出栈,因此直接输出s。 1 #include 2 #include 3 using namespace std; 4 5 void print(int 阅读全文
posted @ 2013-08-01 22:50 windysai 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2739 预处理出所有10001以内的素数,按照递增顺序存入数组prime[1...total]。然后依次处理每个测试数据。采用双重循环计算n的表示数: 外循环i :for (i = 0; x >= prime[i]; i++) 的循环结构枚举所有可能的最小素数prime[i]; 内循环:while (ans =x。若ans = n,则连续素数的和的表示数为sum++,继续外循环。外循环结束后得出的sum即为问题的解。 1 #include 2 using namespace std; 3 4 const int Maxn = 阅读全文
posted @ 2013-08-01 22:23 windysai 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3080该题属于字符串处理中的串模式匹配问题。题目要求我们:给出一个DNA碱基序列,输出最长的相同的碱基子序列。(保证在所有的序列中都有出现) 这里采用了Brute Force算法(由于碱基序列的串长仅为60,规模比较小),这是模式匹配的一种最简单的做法。 设: 最长公共字串为ans,其长度为maxlen。 m个碱基序列为p[0]...p[m-1]。由于公共子序列是每个碱基序列的子串,因此不妨枚举p[0]的每一个可能的子串s。以s为模式,分别以p[1]...p[m-1]为目标进行匹配计算: 若s为p[1]...p[m-1]的... 阅读全文
posted @ 2013-08-01 21:57 windysai 阅读(364) 评论(0) 推荐(0) 编辑