求字符串的子串问题有两类,一种是不连续,一种是连续。
然而这两种都可以用暴力求解,不过容易 time limited exceed;
那可以只用两个for循环就get全部子串吗?
求不连续的子串:用DFS(深度优先搜索)
这里看一个题 HD 1015 Safecracker
这个题大意就是 在给出的5-12个字符里面找到字典序最大的子串(不连续),子串字符数目是5个,且子串满足公式
v - w^2 + x^3 - y^4 + z^5 = target (target由输入给出)
这个题要遍历所有的子串,如果一个一个找的话,要用5个for循环,如果更多呢?显然用暴力行不通。
那试试深度优先搜索(其实是递归的思想):
<span style="font-size:12px;"> #include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#define ma 15
using namespace std;
int len,num[30],bj[30];
char in[ma],ans[ma],t[ma];
int n;