ठीक है, मेरे पास ब्राउज़ किया गया है और मैं इस समस्या के लिए या तो सी या पायथन समाधान ढूंढ रहा हूं। मैं अजगर पसंद करूंगा ... हालांकि यह मेरी कमजोर भाषा है (2 बहुत कमजोर भाषाओं में)।क्रमपरिवर्तन, लेकिन कुछ संख्याओं के साथ
संख्याओं के एक सेट, इस तरह के रूप में 0 0 1 7 0 0 3 0 0 4
- सेट के सभी क्रमपरिवर्तन का पता लगाएं।
- संख्या> 0 उस क्रम में रहना चाहिए (पॉजिशन!)
- संख्याओं के बीच 0 होना चाहिए, हालांकि सेट की शुरुआत और अंत में 0 की आवश्यकता नहीं है। जब तक संख्या 0 के बीच कम से कम 0 0 है।
तो सबसे पहले, मैंने केवल सभी संभावित क्रमपरिवर्तनों को खोजने और फिर प्रत्येक क्रमपरिवर्तन के लिए चाफ को हटाने (अगर एन> 0,! एन + 1> 0) की जांच की और फिर पहली संख्या> 0 == 1 , दूसरा #> 0 == 7 इत्यादि।
मैंने तब रुक दिया और सोचा कि यह दांव था, कहें कि 12 संख्याएं थीं, जो 12 देगी! क्रमपरिवर्तन। यह 500,000,000 क्रमिक क्रम के क्रम में मुझे चाफ से छुटकारा पाने के लिए फिर से दौड़ना होगा।
कहें कि मेरे पास इन नंबर सेटों के 40-50 सेट हैं, जो कि समय के लिए उचित है।
क्या कोई और तार्किक तरीका है? मैंने सोचा कि किसी भी तरह से उन नियमों को ध्यान में रखते हुए पाइथन करते हैं (यदि एन> 0, एन + 1 मस्त == 0) और (एन = पहला नंबर, एन 2 = दूसरा आदि)
का एक उदाहरण एक छोटा समूह (नहीं सभी क्रमपरिवर्तन है, लेकिन विचार देता है) होगा:
1,2,3,0,0,0,0,0
- 1,0,2,0, 3,0,0,0
- 0,1,0,2,0,3,0,0
- 0,0,1,0,2,0,3,0
- 0,0,1,0,0,2,0,3
- 0,1,0,0,2,0,3,0
आदि आदि तो 1, 2,3 क्रम में है लेकिन "0" बस के बारे में स्थानांतरित कर रहे हैं?
धन्यवाद!
छोटे उदाहरण के दूसरे परिणाम नियम का उल्लंघन करने के लिए 3. – timgeb
Oooops .... सोच पहुंचे लगता है। इसे ठीक कर रहा है। – Jcov
अंत में, क्या आप उस इनपुट को सत्यापित करने के लिए इन स्ट्रिंग्स में से प्रत्येक को कुछ इनपुट में तुलना करने जा रहे हैं? यदि ऐसा है, तो हो सकता है कि हर क्रमपरिवर्तन को बलपूर्वक बल देने की कोशिश करने के बजाय "दूरी संपादित करें" गणना करें। – jez