] लक्ष्य उस सरणी से 5 संख्याओं के सभी संभावित संयोजनों को खोजना है। प्रत्येक संयोजन अद्वितीय होना चाहिए, जिसका अर्थ है कि किसी भी डुप्लिकेट की अनुमति नहीं है। उदाहरण के लिए, (1,2,3,4,5) और (5,4,3,2,1) को एक ही संयोजन माना जाता है। यहां बताया गया है कि यह कैसे काम करता है:
वर्ग संयोजन iterator को लागू करता है
{
संरक्षित $ c = null; // संख्याओं का संयोजन
संरक्षित $ s = null; // स्रोत सरणी
संरक्षित $ n = 0; // सरणी में तत्वों की संख्या
संरक्षित $ k = 0; // प्रत्येक संयोजन में तत्वों की संख्या
संरक्षित $ pos = 0; // Iterator की वर्तमान स्थिति
फ़ंक्शन __construct ($ s, $ k) {
// वर्ग गुणों को इनिशियलाइज़ करें
if (is_array ($ s)) {
$ यह-> s = array_values ($ s);
$ यह-> n = गिनती ($ यह-> s);
} अन्य {
$ यह-> s = (स्ट्रिंग) $ s;
$ यह-> n = strlen ($ यह-> s);
}
$ यह-> k = $ k;
$ यह-> rewind ();
}
// वर्तमान कुंजी लौटाएं
प्रकार्य कुंजी() {
$ इस-> pos लौटें;
}
// वर्तमान मान लौटाएं
फ़ंक्शन करंट () {
$ r = सरणी ();
के लिए ($ i = 0; $ i k; $ i)
$ r [] = $ यह-> s [$ this-> c [$ i]];
वापसी is_array ($ यह-> s)? $ r: implode ('', $ r);
}
// अगले संयोजन पर जाएं
कार्य अगला () {
if ($ यह-> _ अगला ())
$ यह-> pos;
अन्य
$ यह-> pos = -1;
}
// पहले संयोजन के लिए रिवाइंड करें
फ़ंक्शन रिवाइंड () {
$ यह-> c = रेंज (0, $ यह-> k);
$ यह-> pos = 0;
}
// जांचें कि क्या Iterator मान्य है (एक मान्य स्थिति पर)
फ़ंक्शन मान्य () {
$ इस-> pos> = 0 लौटें;
}
// अगले संयोजन (आंतरिक कार्य) पर जाएं
संरक्षित फ़ंक्शन _next () {
$ i = $ यह-> k - 1;
जबकि ($ i> = 0 & amp; & amp; $ यह-> c [$ i] == $ यह-> n-$ यह-> k $ i)
$ i--;
if ($ i c [$ i];
जबकि ($ i k - 1)
$ यह-> c [$ i] = $ यह-> c [$ i-1] 1;
सच लौटें;
}
}
// दिए गए सरणी और प्रति संयोजन तत्वों की संख्या के लिए एक संयोजन ऑब्जेक्ट बनाएं
$ संयोजन = नए संयोजन ("1234567", 5);
// सभी संभावित संयोजनों पर पुनरावृत्ति करें और उन्हें प्रिंट करें
foreach ($ सबस्ट्रिंग के रूप में $ संयोजन)
इको $ सबस्ट्रिंग, '';
यह कोड निम्नलिखित आउटपुट का उत्पादन करता है: 34567
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3