1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; //四个可以走的方向 int fx[5]={0,1,-1,0,0}; int fy[5]={0,0,0,1,-1}; //泳池的深度 int swim[110][110]; //标记是否走过 bool f[110][110]; int n,m,ans,s; int p1,p2; int maxsum; //从x、y位置开始 void find(int x,int y,int sum) { if(sum>maxsum) maxsum=sum; //标记为走过 //遍历四个方向 for(int i=1;i<=4;++i) { //将要走到的位置 int dx=x+fx[i]; int dy=y+fy[i]; //如果将要走到的位置和本位置相同,且不越界 if(swim[x][y]<swim[dx][dy]&&dx>0&&dy>0&&dx<=n&&dy<=m&&!f[dx][dy]) { f[dx][dy] = true; find(dx,dy,sum+swim[dx][dy]); f[dx][dy] = false; } } } int main() { cin>>n>>m>>s; for(int i = 1;i <= n;i++){ for(int j = 1;j <= m;j++){ s = (s * 345) % 19997; swim[i][j] = s % 10 + 1; } } //循环从每个点开始回溯找最大面积 for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) { maxsum=0; find(i,j,swim[i][j]); // cout<<maxsum<<endl; ans=max(ans,maxsum); } cout<<ans<<endl; return 0; }
- 1
信息
- ID
- 2301
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者