这道题写到结束都没写出来,因为自己思维不是很清楚 ,没有考虑到0的情况,就是考虑取值范围,而且安排A题的顺序也不对,其实刚开场,别人没A 不等于难,就是考虑取值范围,这点一定要注意,还有就是思路要理清之后再写,不要边敲边写,这样在组队赛中不适用
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int mi[60][60];
int x[60],y[60];
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int n,m,sum,q,w,e,bj,i,j,sb,r,a1,a2,a3,k;
while(~scanf("%d%d",&n,&m))
{
memset(mi,0,sizeof(mi));
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
sb=0;
sum=0;
for(i=0; i<n; i++)
{
x[i]=0;
for(j=0; j<m; j++)
{
scanf("%d",&mi[i][j]);
x[i]+=mi[i][j];
sb+=mi[i][j];
}
}
scanf("%d%d%d",&q,&w,&e);
if(sb!=(q+w+e))
{
printf("0\n");
continue;
}
for(j=0; j<m; j++)
{
y[j]=0;
for(i=0; i<n; i++)
y[j]+=mi[i][j];
}
if(n<3)
sum+=0;
else if(n>=3)
{
for(i=1; i<=n-2; i++)
{
for(j=i+1; j<=n-1; j++)
{ a1=0,a2=0,a3=0;
for(k=0; k<i; k++)
a1+=x[k];
for(k=i; k<j; k++)
a2+=x[k];
a3=sb-a1-a2;
if((a1==q&&a2==w&&a3==e)||(a1==q&&a2==e&&a3==w)||(a1==w&&a2==q&&a3==e)||(a1==w&&a2==e&&a3==q)||(a1==e&&a2==q&&a3==w)||(a1==e&&a2==w&&a3==q))
{
sum++;
}
}
}
}
if(m<3)
sum+=0;
else if(m>=3)
{
for(i=1; i<=m-2; i++)
{
for(j=i+1; j<=m-1; j++)
{ a1=0,a2=0,a3=0;
for(k=0; k<i; k++)
a1+=y[k];
for(k=i; k<j; k++)
a2+=y[k];
a3=sb-a1-a2;
if((a1==q&&a2==w&&a3==e)||(a1==q&&a2==e&&a3==w)||(a1==w&&a2==q&&a3==e)||(a1==w&&a2==e&&a3==q)||(a1==e&&a2==q&&a3==w)||(a1==e&&a2==w&&a3==q))
{
sum++;
}
}
}
}
printf("%d\n",sum);
}
return 0;
}