algorithm - Find number of numbers made with 1,2,3,4 such that same digits never lie together -


एक विशेष अनुक्रम केवल 1 संख्या, 2, 3, 4 का उपयोग करता है और दो आसन्न संख्याएं नहीं हैं वही। · एक प्रोग्राम लिखें जो एन 1 1 एस, एन 2 2 एस, एन 3 3 एस, एन 4 4 एस दिए गए हैं, इन सभी नंबरों का उपयोग करके इस तरह की अनुक्रमों की संख्या का उत्पादन होगा।
आउटपुट अपना उत्तर मॉड्यूलो 1000000007 (10 ^ 9 + 7)। < / P>

मैंने इस सवाल को geeksforgeeks.com पर पाया है।

ऐसे सभी समाधानों को छूने का सरल तरीका ओ (4 ^ एन) क्या गतिशील प्रोग्रामिंग का बेहतर समाधान हो सकता है?

मैंने डीपी के लिए निम्नलिखित कोड चलाने की कोशिश की गलत जवाब देता है क्या कोई भी सुधार का सुझाव दे सकता है?

  # शामिल & lt; iostream & gt; नेमस्पेस एसटीडी का उपयोग करना; इंटी डी 1 [50] [50] [50] [50], डी 2 [50] [50] [50] [50], डी 3 [50] [50] [50] [50], डी 4 [50] [50] [50] [50]; Int main () {int n1, n2, n3, n4; n1 = 2; n2 = 2; n3 = 1; n4 = 2; d1 [1] [0] [0] [0] 1 =; d2 [0] [1] [0] [0] 1 =; d3 [0] [0] [1] [0] 1 =; d4 [0] [0] [0] [1] 1 =; (For int i = 0; i & lt; = n1; i ++) {for (int j = 0; j & lt; = n2; j ++) {के लिए (int k = 0; k & lt; = n3; k ++) {for (int l = 0; एल एंड एलटी; = एन 4; एल ++) {अगर (आई) डी 1 [आई] [जे] [के] [एल] = डी 2 [आई-1] [जे] [के] [एल] + डी 3 [आई-1] [जे] [कश्मीर] [एल] d4 [i-1] [जे] [कश्मीर] [एल]; अगर (जे) d2 [मैं] [जे] [कश्मीर] [एल] = d1 [मैं] [j-1] [कश्मीर] [एल] d3 [मैं] [j-1] [कश्मीर] [एल] d4 [मैं] [j-1] [कश्मीर] [एल]; अगर (के) d3 [मैं] [जे] [कश्मीर] [एल] = d2 [मैं] [जे] [k-1] [एल] d1 [मैं] [जे] [k-1] [एल] d4 [मैं] [जे] [k-1] [एल]; अगर (एल) d4 [मैं] [जे] [कश्मीर] [एल] = d2 [मैं] [जे] [कश्मीर] [एल -1] d3 [मैं] [जे] [कश्मीर] [एल -1] d1 [मैं] [जे] [कश्मीर] [एल-1]; }}}} Cout & lt; & lt; d1 [n1] [एन 2] [एन 3] [एन 4] + डी 2 [एन 1] [एन 2] [एन 3] [एन 4] + डी 3 [एन 1] [एन 2] [एन 3] [एन 4] + d4 [n1] [n2] [n3] [n4]; }  

निम्नलिखित पर विचार करें: dpx [i] [j] एक्स , X के साथ समाप्त होने वाली ऐसी अनुक्रमों की संख्या के लिए खड़े रहें जो i <1,2,3 या 4 के साथ i < / कोड> लोग, j twos, k threes, l चौदह। इसके बाद आपके पास dp1 के लिए सूत्र होगा:

  dp1 [i] [j] [k] [l] = dp2 [i-1] [j] [के] [एल] + डीपीई [आई-1] [जे] [के] [एल] + डीपी 4 [आई-1] [जे] [के] [एल]   <पी> और  dp2 ,  dp3  और  dp4  के अनुरूप है इसका उत्तर  डीपी 1 [एन 1] [एन 2] [एन 3] [एन 4] + डीपी 2 [एन 1] [एन 2] [एन 3] [एन 4] + डीपीएन [एन 1] [एन 2] [एन 3] [एन 4] + होगा। डीपी 4 [एन 1] [एन 2] [एन 3] [एन 4] ।  

समय की जटिलता है O (n1 * n2 * n3 * n4) ।


Comments

Popular posts from this blog

c# - XML serialize base class without knowing derived class -

c# - UnhandledExceptionMode.ThrowException for AppDomain.UnhandledException -

udp - The relationship between MTU and size of skb in xmit function -