试题描述
|
输入
|
输出
|
输入示例
|
输出示例
|
其他说明
|
C++程序:
#include<iostream>
using namespace std;
long int jg[21],a[21][21],js[16][1000];
long int n,m,k,z=0,maxn,minj=99999;
void dfs(long int,long int,long int);
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
{
cin>>jg[i];
if(minj>jg[i]) minj=jg[i];
}
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++) cin>>a[i][j];
dfs(0,0,0);
if(maxn==0) cout<<"@_@";
cout<<maxn;
}
void dfs(long int rp,long int hf,long int tc)
{
if(hf>=js[tc][rp]&&js[tc][rp]!=0) return;
else js[tc][rp]=hf;
if(hf+(m-tc)*minj>k) return;
if(tc==m){maxn=max(maxn,rp);return;}
for(int i=1;i<=n;i++)
dfs(rp+a[tc+1][i],hf+jg[i],tc+1);
}