2014年4月11日
摘要: 题目链接题意 : 给你两个数N和M,让你从1到M中找N个数组成一个序列,这个序列需要满足的条件是后一个数要大于前一个数的两倍,问这样的序列有多少,输出。思路 : dp[i][j]代表着长度为 i 的序列,最后一位是 j ,所以初始化的时候dp[1][ i ] = 1 ;dp[i][j] = sum(dp[i][k])(k 2 #include 3 #include 4 5 using namespace std ; 6 7 __int64 dp[11][2001]; 8 9 void chart()10 {11 memset(dp,0,sizeof(dp));12 ... 阅读全文
posted @ 2014-04-11 21:29 枫、 阅读(223) 评论(0) 推荐(0)
摘要: 点我看题目题意 : 中文题不详述。思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解。DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配。所以初始化的DP[i][i] = 1 ;第i个位置的话需要匹配的最小括号数是1。状态转移方程 :如果第i个位置和第j个位置的两个括号是匹配的,那么DP[i][j] = DP[i+1][j-1],相当于两边分别往里缩了一个;当i 2 #include 3 #include 4 5 using namespace std ; 6 7 int dp[210][210] ; 8 char ch[123] ; 9 10 ... 阅读全文
posted @ 2014-04-11 21:01 枫、 阅读(235) 评论(0) 推荐(0)