Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;const int maxn = 105;const int inf = 0x7fffffff;int a[maxn][maxn];int vis[maxn][maxn];int ans = inf;int n;// 0 down// 1 rightvoid dfs(int i,int j,int last, int sum,int cnt){if(cnt>50)return ;sum += a[i][j];if(last==-1)cnt += 1;if(sum>=ans)return ;if(i==n-1 && j==n-1){ans = min(ans,sum);return ;}if(i+1<n && !vis[i+1][j]){vis[i+1][j] = 1;if(last==1)dfs(i+1, j, 0, sum+cnt,cnt*2);elsedfs(i+1, j, 0, sum,cnt);