动态规划初级练习(二):BadNeighbors
2013-09-09 09:16
162 查看
|
#include <iostream> #include <fstream> #include <vector> #include <string> #include <algorithm> #include <map> #include <stack> #include <cmath> #include <queue> #include <set> #include <list> #include <cctype> #include <stdio.h> #include <stdlib.h> #include <string.h> #define REP(i,j,k) for(int i = j ; i < k ; ++i) #define MAXV (1000) #define INF (0x6FFFFFFF) using namespace std; class BadNeighbors { public: int maxDonations(vector <int> donations) { int ans=0; int dp[50]; bool flag; memset(dp,0,sizeof dp); if(donations.size()==0) return 0; if(donations.size()==1) return donations[0]; if(donations.size()==2) return max(donations[0],donations[1]); REP(i,1,donations.size()) { flag=true; dp[i]=donations[i]; REP(j,1,i-1) { ans=max(dp[j]+donations[i],ans); flag=false; } if(!flag) dp[i]=ans; } int ret=0; memset(dp,0,sizeof dp); dp[0]=donations[0]; REP(i,1,donations.size()-1) { dp[i]=donations[i]; flag=true; REP(j,0,i-1) { ret=max(dp[j]+donations[i],ret); flag=false; } if(!flag) dp[i]=ret; } return max(ans,ret); } }; int main() { //freopen("in.txt","r",stdin); int _x[]= { 11,15 }; vector<int> x(_x,_x+sizeof(_x)/sizeof(_x[0])); BadNeighbors b; printf("%d\n",b.maxDonations(x)); return 0; }
相关文章推荐
- 动态规划初级练习(一):ZigZag
- 华为训练题目:初级——(练习用)挑7
- 算法练习 动态规划 装配线调度
- 最初级程序员的思维“练习”
- 算法练习(8) —— 动态规划
- 动态规划练习一 09:移动路线
- 每周算法练习——动态规划
- 动态规划练习--05(吃糖果)
- 动态规划练习一 26题
- XML小练习:利用DOM解析XML(初级,实用性不强)
- 动态规划练习——吃糖果
- vxWorks 初级练习
- 动态规划练习二:HDU ACM 1159 Common Subsequence
- HTML初级部分实战练习-我的博客(table的 )
- SDAU 编程练习三 动态规划和动态规划与背包问题相结合的问题
- 算法练习 动态规划 硬币找零
- 动态规划练习 13
- 算法练习(7) —— 动态规划 Strange Printer
- 动态规划练习一 01:最长上升子序列
- C语言 初级练习(if-else语句篇)