本帖最后由 sasa13 于 2011-11-06 17:26:15 编辑

解决方案 »

  1.   


           System.out.println("\n"+"After:");
           //Show for Display
           for(int i = num.length-1; i >= 0; i--){
           System.out.print(i+": ");
           for(int j = 0; j < SIZE; j++){
       
                    //.......怎么判断 又 Value=-1 又print "X"
           }
           System.out.println();
    }
    System.out.print("   ");
    for(int k = 1; k <= 11; k++){System.out.print("=");}
    System.out.print("\n"+"   ");
    for(int k = 0; k <= 5; k++){System.out.print(k+" ");}
    System.out.println("\n");不知怎么完成
      

  2.   

    行列个数相同的
    public class Anser {
      public static void findAndReplace(int[][] a , int[][] b)
    {
       int start= 0,end=0, len = a.length;
       for(int i=0;i<len;i++)
       {
          for(int j=0;j<a[i].length;j++)
          {
              if((end-start+1)<3 && j+1< a[i].length)
              {
                 if(a[i][j]==a[i][j+1] && start==end)
                 {
                    start = j;
                    end = j+1;
                 }
                 else if(a[i][j]!=a[i][j+1])
                 {
                    start = end = j+1;
                 }
                 else 
                 {
                    end = j+1;
                 }
              }
              else if(j+1<a[i].length)
              {
                  for(int k=start;k<end+1;k++)
                     b[i][k] = -1;
                  start = end = end+1;
              }
          }
       }
       start=end=0;
       for(int i=0;i<len;i++)
       {
          for(int j=0;j<a[i].length;j++)
          {
              if((end-start+1)<3 && j+1< a[i].length)
              {
                 if(a[j][i]==a[j+1][i] && start==end)
                 {
                    start = j;
                    end = j+1;
                 }
                 else if(a[j][i]!=a[j+1][i])
                 {
                    start = end = j+1;
                 }
                 else 
                 {
                    end = j+1;
                 }
              }
              else if(j+1<a[i].length)
              {
                  for(int k=start;k<end+1;k++)
                     b[k][i] = -1;
                  start = end = end+1;
              }
          }
       }
       
       for(int i=0;i<len;i++)
       {
          for(int j=0;j<b[i].length;j++)
          {
              if(b[i][j]==-1)
                a[i][j]=b[i][j];
          }
       }
    }

        public static void main(String[] args)
        {
         int[][] a={    
         {2,1,1,3,2,1},
         {3,2,1,3,1,2},
         {1,1,1,2,2,3},
         {1,2,2,1,1,3},
         {2,2,1,3,2,2},
         {2,3,3,3,2,2}
         };
         int[][] b={    
    {2,1,1,3,2,1},
    {3,2,1,3,1,2},
    {1,1,1,2,2,3},
    {1,2,2,1,1,3},
    {2,2,1,3,2,2},
    {2,3,3,3,2,2}
        };
        
         findAndReplace(a,b);
         for(int i =0; i<a.length; i++ )
         {
         System.err.println();
         for(int j=0;j<a[i].length;j++)
         { 
         if(a[i][j] == -1)
         {
         System.err.print("X ");
         continue;
         }
         System.err.print(a[i][j]+" ");
         }
         }
        }
    }
      

  3.   

    廷伸题
    用户输入:
    1 2 1 2 1 3
    2 2 1 3 2 2
    1 1 2 1 1 3
    3 3 1 2 2 3
    3 2 1 3 1 2
    2 3 2 3 2 2打印(垂直相反)数组:
    5: 2 3 2 3 2 2
    4: 3 2 1 3 1 2
    3: 3 3 1 2 2 3
    2: 1 1 2 1 1 3
    1: 2 2 1 3 2 2
    0: 1 2 1 2 1 3
        ===========
        0 1 2 3 4 5给使用者input; X1,Y1,X2,Y2:
    1 1 2 1变化效果:
    5: 2 3 2 3 2 2
    4: 3 2 1 3 1 2
    3: 3 3 1 2 2 3
    2: 1 2 2 1 1 3
    1: 2 1 1 3 2 2
    0: 1 2 1 2 1 3
        ===========
        0 1 2 3 4 5再给使用者input; X1,Y1,X2,Y2:
    1 1 2 2
    错误:不能交叉交换,第一个数只能跟上下左右相换速。
      

  4.   

    不好意思,昨天的有错误
    public class Anser {
        public static void find(int[][] a , int[][] b)
    {
       int start= 0,end=0, len = a.length;
       for(int i=0;i<len;i++)
       {
      start = end = 0; 
          for(int j=0;j<a[i].length && j+1< a[i].length;j++)
          {
           if(end + 1 == a[i].length -1 && (end - start) >= 1 && a[i][end] == a[i][end+1])
           {
          end = end + 1;
             for(int k=start;k<end+1;k++)
              b[i][k] = -1;
           }
           else if((end-start)<2)
              {
                 if(a[i][j]==a[i][j+1] && start==end)
                 {
                    start = j;
                    end = j+1;
                 }
                 else if(a[i][j]!=a[i][j+1])
                 {
                    start = end = j+1;
                 }
                 else 
                 {
                    end = j+1;
                 }
              }
              else if(a[i][j]==a[i][j+1])
          {
             end = j+1;
          }
          else
          {
             for(int k=start;k<end+1;k++)
              b[i][k] = -1;
         start = end = end+1;
          }
          }
       }
    }
      
        public static void replace(int[][] a, int[][]b)
        {
           int len = a.length;
         for(int i=0;i<len;i++)
       {
          for(int j=0;j<a[i].length;j++)
          {
              if(b[i][j]==-1)
                a[i][j]=b[i][j];
          }
       }
        
        }
        
        public static  int [][] change(int a[][])
        {
         int rows = a.length;
         int cols = a[0].length;
            int [][]  a_ = new int[cols][rows];
         for(int i=0; i< rows; i++)
         for(int j=0; j<cols; j++)
         {
            a_[j][i] = a[i][j];
         }
         return a_;
        }
      

        public static void main(String[] args)
        {
         int[][] a={    
         {2,1,1,3,2,1,2,2,2,2,2,2},
         {3,2,1,3,1,2,2,2,2,4,2,2},
         {1,1,1,2,2,3,2,2,2,2,2,2},
         {1,2,2,1,1,3,2,7,2,2,4,5},
         {2,2,1,3,2,2,2,2,2,1,2,2},
         {2,3,3,3,2,2,2,1,2,3,2,2}
         };
         int[][] b={    
    {2,1,1,3,2,1,2,2,2,2,2,2},
    {3,2,1,3,1,2,2,2,2,2,2,2},
    {1,1,1,2,2,3,2,2,2,2,2,2},
    {1,2,2,1,1,3,2,2,2,2,2,2},
    {2,2,1,3,2,2,2,2,2,2,2,2},
    {2,3,3,3,2,2,2,2,1,2,2,2}
        };
        
         find(a,b);
            a=change(a);
            b=change(b);
         find(a,b);
            a=change(a);
            b=change(b);
            replace(a,b);
         for(int i =0; i<a.length; i++ )
         {
         System.err.println();
         for(int j=0;j<a[i].length;j++)
         { 
         if(a[i][j] == -1)
         {
         System.err.print("X ");
         continue;
         }
         System.err.print(a[i][j]+" ");
         }
         }
        }
    }
      

  5.   

    thank you for your help