| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哪位帮忙看一下,在我机器上好着,也做到了全是负数的情况,但是就是WA,不知为什么?#include<iostream>
using namespace std;
int plus(int **arr,int lrud[4],int sum[4],int rectangle[4])
{
int rows=rectangle[3]-rectangle[2]+1;
int cols=rectangle[1]-rectangle[0]+1;
for(int i=0;i<4;i++)
{
if(i==1||i==0)
{
int colth=lrud[i];
for(int m=rectangle[2],j=0;j<rows;j++)
sum[i]+=arr[m+j][colth];
}else{
int rowth=lrud[i];
for(int j=0,m=rectangle[0];j<cols;j++)
sum[i]+=arr[rowth][m+j];
}
}
return 1;
}
void main()
{
int N;
cin>>N;
if(N<0||N>100)
exit(-1);
int sign=0,negative=-128;
int **arr=new int *[N];
for(int i=0;i<N;i++)
{
arr[i]=new int[N];
for(int j=0;j<N;j++){
cin>>arr[i][j];
int temp=arr[i][j];
if(temp<-127||temp>127)
exit(-1);
if(temp>=0)
sign=1;
else if(temp>negative)
negative=temp;
}
}
if(sign==0)
cout<<negative;
else
{
int lrud[4]={0,N-1,0,N-1},sum[4]={0,0,0,0};
int rectangle[4]={0,N-1,0,N-1};
int layer=1;
while((lrud[0]!=lrud[1]&&lrud[1]>lrud[0])||(lrud[2]!=lrud[3]&&lrud[3]>lrud[2]))
{
plus(arr,lrud,sum,rectangle);
int temp=0,k=-1;
for(int i=0;i<4;i++)
if(sum[i]<temp)
{
temp=sum[i];
k=i;
}
if(temp<0)
{
for(int j=0;j<4;j++)
sum[j]=0;
if(k==0||k==2)
lrud[k]++;
else lrud[k]--;
rectangle[k]=lrud[k];
}else{
for(int j=0;j<4;j++)
{
if(j==0||j==2)
lrud[j]++;
else lrud[j]--;
}
}//else
}
int all=0;
for(i=rectangle[2];i<=rectangle[3];i++)
for(int j=rectangle[0];j<=rectangle[1];j++)
all+=arr[i][j];
cout<<all<<endl;
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator