मैंने वस्तुओं की एक दी गई सूची के सभी संभावित क्रमपरिवर्तन खोजने के लिए एक कार्यक्रम लिखा है। यह ठीक मतलब यह है कि मेरा कार्यक्रम प्रिंट हर संभव पी (एन, आर) आर के लिए = 0 एनसंख्याओं की सूची के क्रमिक क्रम के लिए जावा कोड
नीचे करने के लिए मानों कोड है:
package com.algorithm;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Permutations<T> {
public static void main(String args[]) {
Permutations<Integer> obj = new Permutations<Integer>();
Collection<Integer> input = new ArrayList<Integer>();
input.add(1);
input.add(2);
input.add(3);
Collection<List<Integer>> output = obj.permute(input);
int k = 0;
Set<List<Integer>> pnr = null;
for (int i = 0; i <= input.size(); i++) {
pnr = new HashSet<List<Integer>>();
for(List<Integer> integers : output){
pnr.add(integers.subList(i, integers.size()));
}
k = input.size()- i;
System.out.println("P("+input.size()+","+k+") :"+
"Count ("+pnr.size()+") :- "+pnr);
}
}
public Collection<List<T>> permute(Collection<T> input) {
Collection<List<T>> output = new ArrayList<List<T>>();
if (input.isEmpty()) {
output.add(new ArrayList<T>());
return output;
}
List<T> list = new ArrayList<T>(input);
T head = list.get(0);
List<T> rest = list.subList(1, list.size());
for (List<T> permutations : permute(rest)) {
List<List<T>> subLists = new ArrayList<List<T>>();
for (int i = 0; i <= permutations.size(); i++) {
List<T> subList = new ArrayList<T>();
subList.addAll(permutations);
subList.add(i, head);
subLists.add(subList);
}
output.addAll(subLists);
}
return output;
}
}
आउटपुट
P(3,3) : Count (6) :- [[1, 2, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2], [2, 1, 3], [1, 3, 2]]
P(3,2) : Count (6) :- [[3, 1], [2, 1], [3, 2], [1, 3], [2, 3], [1, 2]]
P(3,1) : Count (3) :- [[3], [1], [2]]
P(3,0) : Count (1) :- [[]]
मेरे समस्या है , क्योंकि मैं इनपुट सूची में संख्याओं में वृद्धि करता हूं। समय बढ़ने और इनपुट सूची में 11 संख्याओं के बाद, कार्यक्रम लगभग मर जाता है। चलाने के लिए लगभग 2 जीबी मेमोरी लेता है।
मैं इसे 8 जीबी रैम और आई 5 प्रोसेसर वाली मशीन पर चला रहा हूं, इसलिए गति और स्थान कोई समस्या नहीं है।
मैं सराहना करता हूं, अगर कोई मुझे अधिक कुशल कोड लिखने में मदद कर सकता है।
बेहतर के लिए अनुकूल [http://codereview.stackexchange.com/](http:/ /codereview.stackexchange.com/)। –
@ एंथनी धन्यवाद :) मैं इस के लिए नया हूं, विचार नहीं है कि कहां रखा जाए। – dharam