22.10.2009, 20:15
общий
это ответ
Здравствуйте, Мих@ил.
1. Проверка на инъекции - это проверка, что все pos[i] уникальны. Можно модифицировать Ваш метод IsSur(). Третий цикл не нужен, а во втором, перед тем как поставить exist[pos[i]] в true, проверить, что текущее значение false. Если текущее значение уже true, то вернуть false. Если мы успешно закончили цикл, то повторов нет и возвращаем true.
2. В Вашем коде IsSur() ошибка: третий цикл должен быть до n, а не до m.
3. Есть более эффективные способы как перебрать все сюръекции и все инзекции. Самое простое, что Вы можете легко сделать: если n>m, то можно сразу сказать, что нет инъекций, если m>n, то нет сюръекций.