2012-03-01 18 views
5

मेरे पास प्रत्येक अनुक्रमणिका में विभिन्न मैपिंग के साथ वर्णों की एक सरणी है [] []। उदाहरण के लिए:किसी सरणी में वर्णों के सभी संभावित संयोजन प्राप्त करें

{'a', 'b', 'c', 'd', 'e', 'f' } {'g', 'h', 'i' } 

मैं एक स्ट्रिंग के रूप में इस सरणी के लिए सभी संभव चरित्र संयोजन लौटना ही होगा। इसका अर्थ है, उपरोक्त वर्ण सरणी के लिए, मुझे वापस जाना चाहिए: "एजी", "आह", "एआई", "बीजी", "बीएच", "द्वि", "सीजी", "सी", "सीआई" , आदि उपरोक्त की तरह केवल दो चीजों की एक चरित्र सरणी के लिए ऐसा करना आसान होगा, लेकिन अगर अधिक सरणी हैं, तो मुझे नहीं पता कि क्या करना है ... मैं आपसे क्या पूछ रहा हूं मेरी मदद करो! :)

+0

बाहर की जांच http://stackoverflow.com/questions/2920315/permutation-of-array – JKirchartz

+0

क्या गहराई सरणी है? यही कहना है कि कितने डिमेंमेंट हैं? –

उत्तर

10

दो के लिए सरणियों दो नेस्टेड छोरों करना चाहिए:

for (int i = 0 ; i != c[0].length ; i++) { 
    for (int j = 0 ; j != c[1].length ; j++) { 
     System.out.writeln(""+c[0][i]+c[1][j]); 
    } 
} 

अधिक घोंसले के लिए आप एक पुनरावर्ती या एक बराबर ढेर आधारित समाधान की आवश्यकता होगी।

void combos(int pos, char[][] c, String soFar) { 
    if (pos == c.length) { 
     System.out.writeln(soFar); 
     return; 
    } 
    for (int i = 0 ; i != c[pos].length ; i++) { 
     combos(pos+1, c, soFar + c[pos][i]); 
    } 
} 

कॉल अपने main() इस तरह से इस पुनरावर्ती क्रिया:

combos(0, c, ""); 
+0

आह, मुझे यह महसूस करना चाहिए था। : पी मदद के लिए धन्यवाद! वास्तव में अच्छा कोड। – Supervisor

+0

@ पर्यवेक्षक आपका स्वागत है! यदि उत्तर आपके लिए काम करता है, तो [इसे स्वीकार करने] पर विचार करें (http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work) यह इंगित करने के लिए कि समस्या हल हो गई है, और खुद को कमाएं स्टैक ओवरफ़्लो पर ब्रांड-नया बैज। – dasblinkenlight

+0

हो गया और किया गया। :) – Supervisor

संबंधित मुद्दे