动态规划_习题
文章平均质量分 66
yurio7r
ipy8pyp
展开
-
POJ 1088 滑雪
动态规划问题#include #include using namespace std;const int MAX=105;int g[MAX][MAX],dp[MAX][MAX];int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};int row,col;int rec(int x,int y){ if(dp[x][y]!=0) {原创 2015-10-24 09:30:15 · 316 阅读 · 0 评论 -
51Nod 1002 数塔取数问题
很水的dp#include using namespace std;const int MAX = 505;int dp[MAX][MAX];int arr[MAX][MAX];int main(){ int n; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { c原创 2015-12-26 21:00:35 · 916 阅读 · 0 评论 -
lightOJ 1004 - Monkey Banana Problem
基础的DP问题#include #include #include const int MAX = 205;int arr[MAX][MAX];int dp[MAX][MAX];int main(){ int T, cas = 0; std::cin >> T; while (T--) { memset(arr, 0, sizeof(arr)); memset(d原创 2016-01-12 10:36:18 · 484 阅读 · 0 评论 -
51nod 1085 背包问题
01背包问题,直接用dp写。不过我感觉其实记忆话搜索更好理解。#include const int MAX = 1e4 + 5;int dp[105][MAX];int w[MAX], p[MAX];int main(){ int n, W; std::cin >> n >> W; for (int i = 1; i != n + 1; ++i)原创 2016-03-05 11:07:41 · 1089 阅读 · 0 评论 -
51nod 1118 机器人走方格
因为这道题数据过大,所以如果直接用C(m,n)会发生错误,会发生溢出,而且因为除法的存在,求余运算都不能乱用了。我开始错误的代码:#include typedef long long ll;const ll MODE = 1e + 7;ll C(ll a, ll b){ ll res = 1; for (ll i = 1; i <= b; ++i)原创 2016-03-05 13:51:32 · 557 阅读 · 0 评论 -
51nod 1183 编辑距离
因为题目已经说了有三种操作,那就定义状态dp[i][j]表示第一个字符串前i个字符与第二个字符串前j个字符,要相同所需要的最少操作,然后状态的转移就是三种操作最小的那个了。感觉这种题和那个最长公共字串问题很像。#include #include #include const int MAX = 1e3 + 5;char arr1[MAX];char arr2[MAX];int d原创 2016-03-06 09:59:48 · 701 阅读 · 0 评论 -
51nod 1134 最长递增子序列
二分+dp#include #include #include const int MAX = 5e4 + 5;int arr[MAX];int dp[MAX];int binary_search(int arr[], int lenth, int val){ int l = 0, r = lenth - 1; while (l <= r) { int m = (l原创 2016-03-07 16:14:23 · 419 阅读 · 0 评论 -
51nod 1081 子段求和
#include #include typedef long long ll;const int MAX = 5e4 + 5;ll arr[MAX];int main(){ int num; scanf("%d", &num); ll tmp; for (int i = 1; i <= num; ++i) { scanf("%lld", &tmp); arr[i]原创 2016-03-07 16:28:18 · 782 阅读 · 0 评论