在线等,急
by zhz小蒟蒻 @ 2019-06-08 13:42:32
程序附上(我只写了一个爆搜)
```
#include <iostream>
#include <cstdio>
using namespace std;
int n,m,p,ans=-99999999;
int a[1011][1011],robert[1011];
void dfs(int step,int ke,int bu,int money,int jnum);
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
scanf("%d %d %d",&n,&m,&p);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=n;i++)
scanf("%d",&robert[i]);
for(int i=1;i<=n;i++)
dfs(i,1,0,0,0);
printf("%d",ans);
return 0;
}
void dfs(int step,int ke,int bu,int money,int jnum)
{
if(ke==m+1)
{
ans=max(ans,money-jnum);
return;
}
if(ke==1)
{
for(int i=p;i>=1;i--)
{
if(step==n)
dfs(1,ke+1,i-1,money+a[step][ke],jnum+robert[step]);
else
dfs(step+1,ke+1,i-1,money+a[step][ke],jnum+robert[step]);
}
}
if(bu==0)
{
for(int i=p;i>=1;i--)
{
if(step==n)
dfs(1,ke+1,i-1,money+a[step][ke],jnum+robert[step]);
else
dfs(step+1,ke+1,i-1,money+a[step][ke],jnum+robert[step]);
}
}
else
{
if(step==n)
dfs(1,ke+1,bu-1,money+a[step][ke],jnum);
else
dfs(step+1,ke+1,bu-1,money+a[step][ke],jnum);
}
}
```
by zhz小蒟蒻 @ 2019-06-08 13:59:41
.
by Ticzone @ 2019-06-08 14:00:20
太强了,%%%orz
by charliegong @ 2019-06-08 14:43:32