2015-09-09 74 views
3

我有一個二維數組,其中我需要以水平方式打印.e.e,從上到下對角線。找到二維數組中的重複數字

public class ArrayExample { 

    public static int[] array = new int[]{{2,1,0,3,1,6,1}, {2,1,0,3,1,6,1},{2,1,0,3,1,6,1},{2,1,0,3,1,6,1}}; 
    public static void main(String[] args) { 
     printArray(4,4); 
    } 

    private static printArray(int row, column){ 
     for (int i=0; i < row; i++){ 
     for (int j=0; i<column;j++){ 
      System.out.print(array[i][j]); 
     } 
     System.out.println(); 
     } 
    } 
} 

但我需要打印對角線。你能否讓我知道我可以用Java語言編寫的僞代碼。

+0

你是怎麼想到什麼?你得到 – e4c5

+0

程序是用於水平和垂直做工精細但是對於對角線的情況,要比較的元素沒有爲對角元素設置。我添加了System.out語句來跟蹤程序流。 – zilcuanu

+0

從左上角到右下角的主對角線檢查需要一個循環(不是兩個嵌套循環),因爲每個要檢查的元素的行和列是相同的。也就是說,要檢查的元素是「[0] [0]」,「[1] [1]」等。 – user3386109

回答

0
//for right-left diagonal. 

    public static boolean isConsecutiveFour(order , array){ 


    int value=array[0][order-1]; 
    int j=order-1; 
    int flag=0; 

    for(int i=0; i<order && j>=0 ; i++){ 
     if(array[i][j]==value){ 
      System.out.println("Matched : " + array[i][j]+ "at" + i+","+j); 
      value=array[i][j]; 
      flag=1; 
     } 
     j--; 
     if(flag==0){ 
      return false; 
     } 
    } 

}

2

要比較這兩個對角可以簡化你這樣的邏輯:

//This loop is to check the constructiveness for left-right diagonal. 
//Because all the diagonal element will have same indexes, so (i,i) can be used. 
int temp = matrix[0][0]; 
int counter = 0; 
for (int i=0; i<n; i++) { 
     if(matrix[i][i] == temp) { 
      counter++; 
     } 
     else { 
     temp = matrix[i][i]; 
     } 
     if(counter == consecutiveTimes) { 
      break; 
     } 
    } 

//This loop is to check the constructiveness for right-left diagonal. 
//Here sum of all the row index and column index will be n-1. n is the size of your square matrix. 
int temp = matrix[0][n-1]; 
int counter = 0; 
for(int i=0; i<n; i++) { 
     if(matrix[i][n-1-i] == temp) { 
      counter++; 
     } 
     else { 
     temp = matrix[i][n-1-i]; 
     } 
     if(counter == consecutiveTimes) { 
      break; 
     } 
    } 
+0

你爲什麼需要這個。我不確定這些東西是否被認爲是不錯的。如果有任何問題與答案,請評論。 – YoungHobbit

+0

上述程序不適用於數組new int [] [] {{2,1,0,3,1,6,1},{0,9,6,8,6,0,1},{ 5,6,1,1,8,2,9},{6,5,6,1,1,9,1},{1,6,5,1,4,0​​,7},{3, 6,3,5,3,3,7},{3,6,3,3,4,0,7}},其中我們在[2] [0]處有5號元素,對角線重複4次。 – zilcuanu