2016-07-18 4 views
-1

Я попытался написать функцию. Эта функция задается функцией f из {1, 2,. , , , n} к набору целых чисел, определить, является ли f взаимно однозначным, пожалуйста, помогите мне понять реализацию этой функции.

Я написал этот код, но что-то не так.

public class Main { 

public static void isBijective(int A[],int B[]){ 

    int i,j,count; 

    for(i = 0;i<B.length;i++){ 

     B[i]=0; 
    } 

    count = 0; 

    for (j=0;j<A.length;j++){ 

     if (A[j]==0){ 

      A[j] = 1; 
      count = count+1; 

     } 
    } 

    if (count==B.length){ 

     System.out.println("is bijective"); 

    }else{ 
     System.out.println("not bijective"); 
    } 
} 



    public static void main(String[] args) { 


     int A[] = {1,2,3,4,5}; 
     int B[] = {1,2,3,4,5}; 


     isBijective(A,B); 

    } 
} 

Мой код каждый раз вводит инструкцию else.

+0

Если ваш код не выполняет то, что он должен, то используйте отладчик и исправьте свой код. – redFIVE

+2

Вернитесь назад и повторите свой алгоритм с помощью карандаша и бумаги. То, что у вас здесь, очевидно, никогда не будет работать, поскольку ваш счет основан на количестве 0 в A, которое не содержит ни одного. – azurefrog

+1

В чем смысл этого? Ни один из ваших массивов 'A' не имеет значения' 0', поэтому 'count' остается 0. –

ответ

1

Вы устанавливаете все свои значения B [] равными 0, а все ваши значения A [] равны 1. Также ваш счет равен 0, который всегда будет равен n, так что если у вас нет массива длины 0, вы будете всегда заканчивается тем, что он переходит в инструкцию else. Вам необходимо перестроить свой код.

Смежные вопросы