hdu(4597)记忆话搜索
来源:互联网 发布:优易数据网站 编辑:程序博客网 时间:2024/06/09 19:12
#include"stdio.h"
#include"string.h"
int dp[30][30][30][30];
int aa[30],bb[30],sum;
int max(int a,int b)
{
return a>b?a:b;
}
int bfs(int a,int b,int c,int d,int sum)
{
int mx=0;
if(a>b&&c>d)
return 0;
if(dp[a][b][c][d])
return dp[a][b][c][d];
if(a<=b)
{
mx=max(mx,sum-bfs(a+1,b,c,d,sum-aa[a]));
mx=max(mx,sum-bfs(a,b-1,c,d,sum-aa[b]));
}
if(c<=d)
{
mx=max(mx,sum-bfs(a,b,c+1,d,sum-bb[c]));
mx=max(mx,sum-bfs(a,b,c,d-1,sum-bb[d]));
}
return dp[a][b][c][d]=mx;
}
int main()
{
int i,j,k,n;
scanf("%d",&k);
while(k--)
{
sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&aa[i]);
sum+=aa[i];
}
for(j=1;j<=n;j++)
{
scanf("%d",&bb[j]);
sum+=bb[j];
}
memset(dp,0,sizeof(dp));
printf("%d\n",bfs(1,n,1,n,sum));
}
return 0;
}
如果就n个数的话;
dp就用两维的;上面就是有下面的结论得到的;
#include"stdio.h"
#include"string.h"
#define inf 9999999
int dp[30][30];
int aa[100],bb[100];
int sum;
int max(int x,int y)
{
return x>y?x:y;
}
int bfs(int a,int b,int sum)
{
int mx=-inf;
if(a>b)
return 0;
if(dp[a][b])
return dp[a][b];
if(a<=b)
{
mx=max(mx,sum-bfs(a+1,b,sum-aa[a]));
mx=max(mx,sum-bfs(a,b-1,sum-aa[b]));
}
return dp[a][b]=mx;
}
int main()
{
int i,k,n;
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
{
scanf("%d",&aa[i]);
sum+=aa[i];
}
memset(dp,0,sizeof(dp));
printf("%d\n",bfs(1,n,sum));
}
return 0;
}
- hdu(4597)记忆话搜索
- Hdu 4597记忆化搜索
- hdu 4597(记忆化搜索)
- hdu 4597 记忆化搜索
- HDU 4597 Play Game (DP 记忆话搜索)
- HDU 4597 Play Game 记忆化搜索
- hdu 4597 Play Game(记忆化搜索)
- HDU 4597 Play Game 记忆化搜索
- hdu 4597 Play Game【记忆化搜索】
- 【记忆化搜索】HDU
- hdu 1069 记忆化搜索
- 记忆化搜索 HDU 1158
- HDU 1078 DP + 记忆搜索
- hdu 1078记忆化搜索
- DFS+记忆搜索-HDU-1078
- hdu 1078 记忆化搜索
- hdu 2437 (记忆化搜索)
- hdu 1260(记忆化搜索)
- oracle如何删除一个用户下的所有数据?
- Hbase简介
- jvisualVM的试用本地及远程xp及linux的的监听
- excel的导入导出
- Android点滴
- hdu(4597)记忆话搜索
- Java Thread 总结
- Linux系统下文件字符编码转换脚本
- <action-mappings > 属性详解
- java数组声明及初始化
- awk过滤IP记录
- CString、TCHAR*、char*转换 cstring与char *的转化(还包含很多种转换)
- 第七周组队赛130825
- linux上的一些系统监测工具简介