UVA10118 - Free Candies
2015-09-01 13:00
323 查看
我有话说:
这道题比较简单,总思路就是dfs+记忆化搜索
这道题比较简单,总思路就是dfs+记忆化搜索
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <vector> #include <queue> using namespace std; const int maxn=100; int n; int candy[4][maxn],vis[maxn],top[4]; int dp[maxn][maxn][maxn][maxn]; int dfs(int cnt) { int& ans=dp[top[0]][top[1]][top[2]][top[3]]; if(ans!=-1)return ans; if(cnt==5)return ans=0; ans=0; for(int i=0;i<4;i++){ if(top[i]==n)continue; int color=candy[i][top[i]]; top[i]++; if(vis[color]){ vis[color]=0; ans=max(ans,dfs(cnt-1)+1); vis[color]=1; }else{ vis[color]=1; ans=max(ans,dfs(cnt+1)); vis[color]=0; } top[i]--; } return ans; } int main() { while(scanf("%d",&n)==1&&n){ for(int i=0;i<n;i++){ for(int j=0;j<4;j++){ scanf("%d",&candy[j][i]); } } memset(top,0,sizeof(top)); memset(dp,-1,sizeof(dp)); memset(vis,0,sizeof(vis)); printf("%d\n",dfs(0)); } return 0; }
相关文章推荐
- C++中string的拼接
- HDU 1711 Number Sequence(KMP模板)
- Android 友盟更新
- Oracle,实现一条记录的上移下移
- 网站登录后会话无法保存。php环境
- 【IT历史】SP和CP
- zsh安装和插件安装总结
- 探索新的Android权限模式
- NYOJ 119 士兵杀敌(三)(线段树--区间最值之差)
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示
- OAF学习笔记-15-大文本(过长,英文数字)在table 中换行显示