मान लीजिए, हमें आकार n की एक सूची प्रदान की गई है जिसमें धनात्मक पूर्णांक और एक अन्य धनात्मक पूर्णांक m है। मान लीजिए, हम वर्तमान में एक लूप के अंदर हैं और प्रत्येक पुनरावृत्ति में, हम सरणी में कुछ तत्वों के मान को 1 से घटाते हैं और शेष तत्वों के मान को m से बढ़ाते हैं। हमें यह पता लगाना है कि कुछ पुनरावृत्तियों के बाद सूची के आधे या अधिक तत्व शून्य में बदल जाते हैं या नहीं। यदि संभव हो तो हम सत्य लौटाते हैं, और यदि नहीं तो गलत।
इसलिए, अगर इनपुट इनपुट_लिस्ट =[10, 18, 35, 5, 12], एम =4 जैसा है, तो आउटपुट ट्रू होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- आवृत्ति_सूची :=आकार एम+1 की एक नई सूची 0 के साथ आरंभ की गई
- मैं :=0
- जबकि मैं <इनपुट_सूची का आकार, करता हूं
-
फ़्रीक्वेंसी_लिस्ट [इनपुट_लिस्ट [i] मॉड (एम + 1)]:=
फ़्रीक्वेंसी_लिस्ट [इनपुट_लिस्ट [i] मॉड (एम + 1)] + 1
- i :=i + 1
-
- मैं :=0
- जबकि मैं <=मी, करते हैं
- अगर फ़्रीक्वेंसी_लिस्ट[i]>=(इनपुट_लिस्ट का आकार/2) , तो
- लूप से बाहर आएं
- i :=i + 1
- अगर फ़्रीक्वेंसी_लिस्ट[i]>=(इनपुट_लिस्ट का आकार/2) , तो
- अगर मैं <=मी, तो
- सही लौटें
- अन्यथा,
- झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(input_list, m): frequency_list = [0] * (m + 1) i = 0 while(i < len(input_list)): frequency_list[(input_list[i] % (m + 1))] += 1 i += 1 i = 0 while(i <= m): if(frequency_list[i] >= (len(input_list)/ 2)): break i += 1 if (i <= m): return True else: return False input_list = [10, 18, 35, 5, 12] print(solve(input_list, 4))
इनपुट
[10, 18, 35, 5, 12], 4
आउटपुट
True