(参见p2.jpg)
import java.util.Scanner; public class Main { public static int n,m,gezi[][],state[][],min=100,c=0; public static void main(String[] args) { Scanner s=new Scanner(System.in); int sum=0; m=s.nextInt(); n=s.nextInt(); gezi=new int[n][m]; state=new int[n][m]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ gezi[i][j]=s.nextInt(); sum+=gezi[i][j]; } } cut(0,0,sum/2); if(min==100) min=0; System.out.println(min); } public static int cut(int a,int b,int x){ if(x==0){ if(c<min){ min=c; } } if(x<0) return 100; if(a<n&&b<m&&a>=0&&b>=0){ if(state[a][b]==0){ x-=gezi[a][b]; state[a][b]=1; c++; cut(a+1,b,x); cut(a-1,b,x); cut(a,b+1,x); cut(a,b-1,x); // x+=gezi[a][b];//x为局部变量变不变回来 都一样 state[a][b]=0; c--; } } return min; } }
