2 条题解
-
1Sankano (San001) LV 9 @ 2022-08-05 20:30:45
观察数据6,可知题目考察爆搜。爆搜是一个人写码能力的表现,所以不要轻视。
AC code
#include <iostream> #include <cstring> #include <algorithm> using namespace std; #define in inline #define rint register int typedef long long LL; typedef pair<int,int> PII; in int read() { rint x=0,f=0; register char ch=getchar(); while(ch<'0'||ch>'9')f|=ch=='-',ch=getchar(); while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar(); return f?-x:x; } /*----------code----------*/ const int N=10; int a[N][N]; int n,m; const int dx[]={0,0,-1,1},dy[]={-1,1,0,0}; int res=-2e9; bool st[N][N]; void dfs(int sx,int sy,int sum) { if(sx==n&&sy==m) { res=max(res,sum); return; } for(int i=0;i<4;i++) { int x=sx+dx[i],y=sy+dy[i]; if(!x||x>n||!y||y>m) continue; if(st[x][y]) continue; st[x][y]=true; dfs(x,y,sum+a[x][y]); st[x][y]=false; } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; st[1][1]=1; dfs(1,1,a[1][1]); cout<<res; return 0; }
-
02021-07-22 13:52:21@
dfs模板题。
(对于部分分,如果\(n,m\)有一个奇数,则答案是\(n*m\),否则答案是\(n*m-1\))
#include<bits/stdc++.h> using namespace std; int n,m; int a[15][15], vis[15][15]; int sum = 0, ans = -99999999; int d[4][2] = { -1,0, 1,0, 0,-1, 0,1 }; void dfs(int x,int y) { if(x==0 || x>n || y==0 || y>m) return; if(x==n && y==m) { ans = max(ans, sum); return; } for(int i=0;i<4;i++) { int dx = x + d[i][0], dy = y + d[i][1]; if(vis[dx][dy]) continue; vis[dx][dy] = 1; sum += a[dx][dy]; dfs(dx,dy); sum -= a[dx][dy]; vis[dx][dy] = 0; } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; sum=a[1][1]; vis[1][1] = 1; dfs(1,1); cout<<ans<<endl; return 0; }
- 1
信息
- ID
- 1286
- 难度
- 7
- 分类
- (无)
- 标签
- (无)
- 递交数
- 34
- 已通过
- 9
- 通过率
- 26%
- 被复制
- 6
- 上传者