ZOJ-1002 有问题…通过不了

来源:互联网 发布:linux dump整个内存 编辑:程序博客网 时间:2024/06/03 05:58
import java.util.ArrayList;import java.io.BufferedInputStream;  import java.util.Scanner;public class Main {public static int MaxNum=0;public static ArrayList<Integer> MaxNumArray=new ArrayList<Integer>();private static int _Range;public int get_Range() {return _Range;}public void set_Range(int _Range) {this._Range = _Range;}public static void main(String args[]){boolean flag=true;while(flag){InputResource();if(_Range==0){flag=false;continue;}int [][] Matrixs=new int [_Range][_Range];InputMap(_Range,Matrixs);//OutputMap(_Range,Matrixs);//System.out.println("************Begin**********");Iteration(_Range,Matrixs,0,0);System.out.println(MaxNum);MaxNumArray.add(MaxNum);MaxNum=0;_Range=0;}//for(int i=0;i<MaxNumArray.size();i++){//System.out.println(MaxNumArray.get(i));//}}public static void InputResource(){Scanner sc=new Scanner(System.in);_Range=sc.nextInt();}public static void InputMap(int Range,int [][]Matrix){Scanner sc=new Scanner(new BufferedInputStream(System.in));char[][] tempMatrix=new char[Range][Range];for(int j=0;j<Range;j++){//Input the resource of Map.tempMatrix[j]=sc.next().substring(0,Range).toCharArray();}for(int j=0;j<Range;j++){//Input the resource of Map.for(int k=0;k<Range;k++){if(tempMatrix[j][k]=='X'){  //Location the 'Wall' in the String.Matrix[j][k]=-1;}}}}public static void OutputMap(int Range,int [][]Matrix){System.out.println("******Output*****");for(int j=0;j<Range;j++){//Output the Mapfor(int k=0;k<Range;k++){if(Matrix[j][k]==-1){System.out.print(Matrix[j][k]+" ");}else System.out.print(" "+Matrix[j][k]+" ");}System.out.println();}System.out.print("***************");System.out.println();}public static boolean Caculate(int Range,int [][]Matrix,int row,int colum){int sum=0;for(int i=0;i<Range;i++){sum=sum+Matrix[i][colum];}if (sum>0)return false;sum=0;for(int i=0;i<Range;i++){sum=sum+Matrix[row][i];}if (sum>0)return false;for(int i=row-1;i>=0;i--){if(Matrix[i][colum]==1)return false;if(Matrix[i][colum]==-1)break;}for(int i=row+1;i<Range;i++){if(Matrix[i][colum]==1)return false;if(Matrix[i][colum]==-1)break;}for(int i=colum-1;i>=0;i--){if(Matrix[row][i]==1)return false;if(Matrix[row][i]==-1)break;}for(int i=colum+1;i<Range;i++){if(Matrix[row][i]==1)return false;if(Matrix[row][i]==-1)break;}return true;}public static void Iteration(int Range,int[][] Matrix,int Start,int latitude){int [][] tempMatrix=new int[Range][Range];for(int i=0;i<Range;i++){for(int j=0;j<Range;j++){tempMatrix[i][j]=Matrix[i][j];}}int num=0;for(int i=Start;i<Range;i++){for(int j=latitude;j<Range;j++){if(i+1<Range){for(int k=i+1;k<Range;k++){if(Matrix[k][j]==-1)break;//System.out.println("************Flag**********");Iteration(Range,tempMatrix,k,j);}}if(tempMatrix[i][j]==0){//System.out.println("i="+i);//System.out.println("j="+j+"*************");if(Caculate(Range, tempMatrix, i, j)){tempMatrix[i][j]=1;}}}}if(latitude+1<Range){for(int i=0;i<Range;i++){for(int j=latitude+1;j<Range;j++){if(i+1<Range){for(int k=i+1;k<Range;k++){if(Matrix[k][j]==-1)break;//System.out.println("************Flag**********");Iteration(Range,tempMatrix,k,j);}}if(tempMatrix[i][j]==0){//System.out.println("i="+i);//System.out.println("j="+j+"*************");if(Caculate(Range, tempMatrix, i, j)){tempMatrix[i][j]=1;//OutputMap(Range,tempMatrix);}}}}}for(int i=0;i<Range;i++){for(int j=0;j<Range;j++){if(tempMatrix[i][j]==1)num++;}}if (MaxNum<num){MaxNum=num;//System.out.println(MaxNum);//OutputMap(Range,tempMatrix);//System.out.println("***");}}}

0 0
原创粉丝点击