2013年7月29日
摘要: 题目链接。题目大意:给定一个矩阵,马的初始位置在(0,0),要求给出一个方案,使马走遍所有的点。列为数字,行为字母,搜索按字典序。分析:用 vis[x][y] 标记是否已经访问。因为要搜索所有的可能,所以没搜索完一次要把vis[x][y]标记为未访问。详情见代码。用 p[x][y] 表示 (x,y)点的祖先,以便输出路径。dfs搜索即可。#include #include #include #include #include using namespace std;const int maxn = 30;const int VAL = 10000;int dx[] = {-1, 1, -2, 阅读全文
posted @ 2013-07-29 19:06 Still_Raining 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题目链接。题目大意:给定n个字符串,找出最长相同且长度大于3的子串,如果存在多个,找出字典序最小的。分析:直接枚举(暴搜)。对于s[0]的每一个子串,判断是否在其它n-1个字符串中都存在。#include #include #include #include using namespace std;#define N 60string s[30], str, str_max;int main(){ int T, n, max_len; scanf("%d", &T); while(T--) { scanf("%d", &n); max_l 阅读全文
posted @ 2013-07-29 15:02 Still_Raining 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目链接。题目大意:给定一个n,和两个序列a[i], p[i]. a[i] 表示需要购买 i品质 的数量,p[i] i 等级的价格。1.每个品质都会有不同的价格,价格依据品质上升而上升2.买一次 i 品质,都要加上10个 i 品质 价格的手续费。3.可一用高品质的代替低品质.求最少的花费.分析:这题就简单地矩阵链乘法(《算法导论》第15章,动态规划)。用 dp[i][j] 表示购买 i 品质到 j 的最少的花费.dp[i][j] = min{dp[i][k]+dp[k+1][j]), i#include using namespace std;const int maxn = 1500;int 阅读全文
posted @ 2013-07-29 09:19 Still_Raining 阅读(351) 评论(0) 推荐(0) 编辑