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