回文串指给定的字符串,正着读和反着读都是一样的。如ADA,反过来还是ADA即为回文串。最长回文子串指查找一给定字符串中最长的回文串。
通常有以下4种解法。主要考虑的是时间复杂度。
1:穷举法
穷举所有的子串,找出是回文串的子串,统计出最长的一个。
求每一个子串时间复杂度O(N^2),判断子串是不是回文O(N),两者是相乘关系,所以时间复杂度为O(N^3)。
代码如下:
#includ...
分类:
其他好文 时间:
2015-03-10 21:28:00
阅读次数:
162
直接dfs穷举所有的数,然后再判断是不是素数,注意dfs时不同层的剪枝。代码如下:/*
ID: 15674811
LANG: C++
TASK: sprime
*/
#include
#include
#include
#include
#include
#include
using name...
分类:
其他好文 时间:
2015-03-09 19:10:01
阅读次数:
158
一:简介
(1)回溯法 又称试探法
回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法;基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。
适用场景:当遇到某一类问题时,它的问题可以分解,但是又不能得出明确的动态规划或是递归解法,此时可以考虑用回溯法解决此类问题。回溯法的优点在于其程序结构明确,可读性强,易于理解,而且通过对问题的分...
分类:
编程语言 时间:
2015-03-08 15:42:56
阅读次数:
761
一、异常概述 异常处理已经成为衡量一门语言是否成熟的标准之一,目前的主流编程语言如C++、C#、Ruby、Python等,大都提供了异常处理机制。增加了异常处理机制后的程序有更好的容错性,更加健壮。二、传统错误处理的缺陷 –无法穷举所有异常情况:因为人类知识的限制,异常情况总比可以考虑到的情况多.....
分类:
编程语言 时间:
2015-03-07 21:07:27
阅读次数:
166
题意还是很简单的,我们可以用dfs穷举出所有可能的名字;重要的是查询名字是不是合法,开始的时候用的map,没想到超时了;于是后面用的字典树,其实应该也可以用二分进行查找。另外好像USACO对内存限制很严,数组不能开太大。代码如下:/*
ID: 15674811
LANG: C++
TASK: namenum
*/#include
#include
#include...
分类:
其他好文 时间:
2015-03-07 15:42:22
阅读次数:
120
for循环.for 然后 tab键 自动生成下面的for (int i = 0/*初始条件*/; i < length/*循环条件*/; i++/*状态改变*/) { }穷举:把所有的可能性都列举出来①我有一元,两元,五元,...
这是一个 用 穷举法 解 迷宫问题 的一个示例,但在 效率 和 解的 最短路径上 就稍显不足了。
这 两个问题,留在 以后 空闲 时刻 解答。
欢迎指出代码不足
下面上代码:
// Maze.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
struct Postion
{
int x;
int y;
};
...
分类:
其他好文 时间:
2015-03-04 11:08:21
阅读次数:
183
//1元,2元,5元;凑够20元有多少种可能int x = 0, y = 0, z = 0, m = 0; while (x <= 20) { while (y <= 10) { while (z <= 4) { if (x + 2 * y + 5 * z == 20) { Console.Writ...
//穷举int m=0; for (int i = 1; i <=200/15; i++) { for (int j = 1; j <=200/3 ; j++) { for (int k = 1; k < 200/2; k++) { if (15*i+3*j+2*k==200) { Console....
一、章节复习: 循环。反复执行某段语句一种语法形式。 1.基本语法: for( 初始条件 ; 循环条件 ; 状态的改变 ) { 循环体 } 循环的四要素。 循环的执行过程。初始条件--循环条件--循环体--状态改变--循环条件--。。。。。 案例:1.打印10您好。2.显示1-100的数(所有的数,...