hdu 4925 Apple Tree
Apple Tree
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 244 Accepted Submission(s): 173
For each test case, two integers N, M (1<=N, M<=100) are given in a line, which denote the size of the map.
2 2 2 3 3
8 32
枚举两种情况求最大值。。
#include"stdio.h" #include"string.h" #include"queue" #include"vector" using namespace std; #define N 105 #define M 1000000 int g[N][N]; int n,m; int dir[4][2]={0,1,0,-1,-1,0,1,0}; int judge(int x,int y) { if(x>=0&&x<n&&y>=0&&y<m) return 1; return 0; } int main() { int T,i,j; int k,x,y; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); memset(g,0,sizeof(g)); __int64 ans=0,max; ans=max=0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if((i+j)%2) //奇数的种苹果树 g[i][j]=1; } } for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(g[i][j]==0) continue; for(k=0;k<4;k++) { x=i+dir[k][0]; y=j+dir[k][1]; if(judge(x,y)&&g[x][y]==0) { g[i][j]*=2; } } ans+=g[i][j]; } } max=ans; ans=0; memset(g,0,sizeof(g)); for(i=0;i<n;i++) { for(j=0;j<m;j++) { if((i+j)%2==0) //偶数的种苹果树 g[i][j]=1; } } for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(g[i][j]==0) continue; for(k=0;k<4;k++) { x=i+dir[k][0]; y=j+dir[k][1]; if(judge(x,y)&&g[x][y]==0) { g[i][j]*=2; } } ans+=g[i][j]; } } max=max>ans?max:ans; printf("%I64d\n",max); } return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。