这题暴搜加剪枝是过不了的,必须要找到规律,然而这个题找规律并没有那么容易,不是手写几个样例就能找到的,
网上看别人的题解:
规律如下:
对于一个3*5的矩阵,它的其中一行(不一定是第一行,第二行,第三行也有可能)是{5,7,6}的分布,而剩余两行是{5,7,7}的分布规律;
具体的可以百度,看别人具体的探索过程,这里不再啰嗦,贴上代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<set>
#include<cmath>
#include<climits>
#include<vector>
#include<cfloat>
#include<queue>
#include<cctype>
#include<cstdlib>
#include<string>
#define LL long long
using namespace std;
int he[3][3];
int a[3]={5,3+3,4+4};
int b[3]={5,3+4,3+4};
void solve()
{
int ans=0;
for(int k=0;k<3;k++)
{
int s=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(i==k) s+=he[i][j]*a[j];
else s+=he[i][j]*b[j];
}
}
ans=max(ans,s);
}
cout<<ans<<endl<<endl;
}
int main()
{
int n;
cin>>n;
for(int t=1;t<=n;t++)
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
cin>>he[i][j];
sort(he[i],he[i]+3);
}
cout<<"Test #"<<t<<endl;
solve();
}
return 0;
}