样例输出
3
#include <iostream> #include<cstdio> #include<cstring> #include<cmath> #define INF 0x7fffffff using namespace std; int n,m,ans,sum,d[4][2]={0,1,0,-1,1,0,-1,0},v[11][11],a[11][11]; void dfs(int x,int y,int s,int t) { if(t>=ans||s>sum) return ; if(s==sum) { ans=min(ans,t); return ; } for(int i=0;i<4;i++) { int tx=x+d[i][0],ty=y+d[i][1]; if(tx<0||tx>=n||ty<0||ty>=m||v[tx][ty]) continue; v[tx][ty]=1; dfs(tx,ty,s+a[tx][ty],t+1); v[tx][ty]=0; } } int main() { cin>>m>>n; sum=0; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { cin>>a[i][j]; sum+=a[i][j]; } if(sum%2) { cout<<0<<endl; return 0; } sum/=2; ans=INF; v[0][0]=1; dfs(0,0,a[0][0],1); if(ans==INF) cout<<0; else cout<<ans; }