Permutacii
5 отговора
360 прегледа
Permutacii
Здравейте,
имам за задача на Йава, в която трябва да напиша метод, които приема като параметър цяло число n, и връща колекция от всички пермутации на {1, 2, 3, ..., n-1, n}. (koito трябва да са n! на брой.). Проблема е че трябва да е рекурсивен метод, т.е. да използва рекурсия. Точниа метод е:
public static Set<Vector<Integer>> permutations(int n)
Дайте ми някакви идеи как да го направя.
имам за задача на Йава, в която трябва да напиша метод, които приема като параметър цяло число n, и връща колекция от всички пермутации на {1, 2, 3, ..., n-1, n}. (koito трябва да са n! на брой.). Проблема е че трябва да е рекурсивен метод, т.е. да използва рекурсия. Точниа метод е:
public static Set<Vector<Integer>> permutations(int n)
Дайте ми някакви идеи как да го направя.
Re: Permutacii
Много обичам рекурсия.
import java.util.*;
class recperm
{
static Set cycle(int i, Vector v){
Set out = new HashSet();
for(int k = 0; k <= v.size(); k++){
Vector newv = new Vector(v);
newv.insertElementAt(i,k);
out.add( newv );
}
return out;
}
static Set combine(int i, Set set){
Set out = new HashSet();
for (Object v : set ){
out.addAll( cycle(i, (Vector)v));
}
return out;
}
static Set permutations(int i){
if( i == 1 ){
Vector v = new Vector();
v.add(1);
Set out = new HashSet();
out.add(v);
return out;
}
return combine(i, permutations(i-1)); // <- recursion
}
public static void main(String[] args){
Set res = permutations( 8);
System.out.println(res);
}
}
Re: Permutacii
Purvo - izviniavaite za latinicata, no pi6a ot universiteta, a tuk niama kirilica.
Vtoro - mersi mnogo, ba4ka, a i go razbrah :-)
Imam samo edin vupros:
Kakvo pravi tova:
// for (Object v : set ) //
Da ne bi za vseki vector(object) v da izpulniava body-to na cikula?
Mersi pak za source-a! :-)
Vtoro - mersi mnogo, ba4ka, a i go razbrah :-)
Imam samo edin vupros:
Kakvo pravi tova:
// for (Object v : set ) //
Da ne bi za vseki vector(object) v da izpulniava body-to na cikula?
Mersi pak za source-a! :-)
Re: Permutacii
Tova zna4i li 4e niama da raboti (for-a ) na po-stara versia na java? 6te dade compile error ili kakvo?
Re: Permutacii
Няма да работи на по-стара версия на Java от 1.5 или 5.0 (кой как иска), не само заради for loop-a но и заради autoboxing-a.
Нашето правило в такива случаи е: да го духат по-старите версии.
Нашето правило в такива случаи е: да го духат по-старите версии.