2012-12-06 11 views
5

के वजन के साथ Knapsack कुछ हफ्ते पहले मुझे प्रोग्रामिंग प्रतियोगिता में कोई समस्या आई, समस्या 0/1 समस्या को कम करने के लिए कमजोर थी।लगभग 10^9

लेकिन मैं ऐसा नहीं कर सका क्योंकि अधिकतम वजन लगभग 10^9 था, इसलिए सी ++ में मैं सरणी का उपयोग नहीं कर सका। हालांकि वस्तुओं की संख्या लगभग 10^5 थी।

इसे हल करने का एक तरीका, मैं सोच सकता हूं कि एसटीएल मानचित्र का उपयोग कर रहा है, लेकिन यह सुनिश्चित नहीं है कि यह कैसे करें।

किसी भी मदद की सराहना की जाएगी। धन्यवाद।

+0

@irrelephant ओह, वास्तव में यह 10^9 था, बस मेरे प्रश्न को संपादित किया। –

+0

एक सरणी के लिए बहुत बड़ा मतलब क्या है? – dchhetri

+0

@ user814628 मेरा मतलब है कि मैं एक सरणी [2] [10^9] सी में घोषित नहीं कर सकता। –

उत्तर

1

यदि आपको केवल एक बड़ी सरणी की आवश्यकता है, तो आप इसे छोटे से क्यों नहीं तोड़ते?

class Huge_array{ 
    public: 
    Huge_array(size_t max_size): 
     max_size(max_size), 
     store(max_size/v_size, vector<int>(v_size)) 
     {} 

    int& operator[](size_t index) 
    { 
     assert(0<=index && index<max_size); 
     return store[index/v_size][index%v_size]; 
    } 

    private: 
    size_t max_size; 
    const int v_size=100000; 
    vector<vector<int> > store; 
}; 

मुझे उम्मीद है कि इसमें कोई टाइपो नहीं है।
उपयोग:

Huge_array my_array((size_t)10e9); 
my_array[30000000]=10; // and so on upto size_t(10e9) - 1 

आप मूल्य के लिए बड़ा मूल्यों की आवश्यकता है, तो आप Huge_array में vector<int>vector<long> करने के लिए या vector<double> या जो कुछ भी कर सकते हैं।

+0

मुझे लगता है, यह एक अच्छा विचार है, लेकिन फिर भी समस्या से अलग हम एक ही समस्या नहीं कर सकते सभी 10^9 तत्वों का उपयोग करना मेरा मतलब है कि केवल चयनित तत्वों तक पहुंचने का मतलब है? –

+0

अच्छा, विकिपीडिया किसी भी बेहतर समाधान की सूची नहीं देता है, और अगर ऐसा होता है तो बेहतर होगा। अगर आप कुछ विशेषता रखते हैं तो आप केवल बेहतर कर सकते हैं आप इसका लाभ उठा सकते हैं। यही कारण है कि मैंने पूछा कि मूल कार्य क्या था। क्या आप अपना वजन बढ़ा सकते हैं? क्या आप सटीक या अनुमानित समाधान में रूचि रखते हैं? –

+0

मुझे लगता है कि मुझे प्रश्न की प्रतिलिपि बनाना चाहिए था। बीडीडब्ल्यू मुझे सटीक आवश्यकता है समाधान –

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