शब्दों का एक क्रम दिया गया है, प्रत्येक पंक्ति के लिए वर्णों की संख्या की एक सीमा है। लाइन ब्रेक लगाकर, इस तरह से कि लाइनें स्पष्ट रूप से छपी हों।
पंक्तियों को संतुलित किया जाना चाहिए, जब कुछ पंक्तियों में बहुत अधिक अतिरिक्त स्थान होते हैं और कुछ पंक्तियों में कम संख्या में अतिरिक्त स्थान होते हैं, तो यह उन्हें अलग-अलग रेखाओं में संतुलित कर देगा। यह उन्हें संतुलित करने के लिए समान संख्या में अतिरिक्त रिक्त स्थान का उपयोग करने का प्रयास करता है।
यह एल्गोरिथ्म उत्पन्न करेगा कि एक पंक्ति में कितने शब्द रखे जा सकते हैं, और कितनी पंक्तियों की आवश्यकता है।
इनपुट और आउटपुट
इनपुट:प्रत्येक पंक्ति के लिए शब्दों की लंबाई। {3, 2, 2, 5}। अधिकतम चौड़ाई 6 है। आउटपुट:पंक्ति संख्या 1:शब्द संख्या:1 से 1 (केवल एक शब्द) पंक्ति संख्या 2:शब्द संख्या:2 से 3 (दूसरा और तीसरा शब्द) पंक्ति संख्या 3:शब्द संख्या:4 से 4 ( चौथा शब्द)
एल्गोरिदम
wordWrap(wordLenArr, size, maxWidth)
इनपुट - शब्द लंबाई सरणी, सरणी का आकार और शब्द की अधिकतम चौड़ाई।
आउटपुट - सूची में प्रति पंक्ति कितने शब्द होंगे।
दो वर्ग मैट्रिक्स को परिभाषित करना शुरू करें अतिरिक्त स्पेस और ऑर्डर की लाइनकॉस्ट (आकार + 1) दो सरणी कुल लागत और आकार के समाधान को परिभाषित करें (आकार + 1) i:=1 से आकार के लिए, अतिरिक्त स्पेस करें [i, i]:=मैक्सविड्थ - WordLenArr[i - 1] j के लिए:=i+1 आकार के लिए, अतिरिक्त स्थान करें[i, j]:=extraSpace[i, j-1] - wordLenArr[j-1] - 1 i के लिए किया गया :=1 से आकार, जे के लिए करें:=i+1 आकार के लिए, अगर अतिरिक्त स्पेस [i, j] <0, फिर लाइनकॉस्ट [i, j] =∞ और यदि j =आकार और अतिरिक्त स्थान [i, j]> =0, तो करें लाइनकॉस्ट [आई, जे]:=0 और लिनकॉस्ट [आई, जे]:=अतिरिक्त स्पेस [आई, जे] ^ 2 किया गया कुल लागत [0]:=0 जे के लिए:=1 आकार के लिए, कुल लागत करें [जे]:=∞ for i :=1 to j, do if TotalCost[i-1] और linCost[i, j] और (totalCost[i-1] + lineCost[i,j]उदाहरण #शामिल करेंनेमस्पेस std का उपयोग करना;int dispSolution (int Solution[], int size) { int k; अगर (समाधान [आकार] ==1) के =1; अन्य k =dispSolution (समाधान, समाधान [आकार] -1) + 1; cout <<"लाइन नंबर "< =0) lineCost[i][j] =0; अन्य लाइनकॉस्ट [i] [जे] =अतिरिक्त स्पेस [i] [जे] * अतिरिक्त स्पेस [i] [जे]; } } कुल लागत [0] =0; के लिए (int j =1; j <=size; j++) {// शब्दों के लिए न्यूनतम लागत पाएं TotalCost[j] =INT_MAX; के लिए (int i =1; i <=j; i++) { if (totalCost[i-1] !=INT_MAX &&lineCost[i][j] !=INT_MAX &&(totalCost[i-1] + lineCost[i] [जे] <कुल लागत [जे])) {कुल लागत [जे] =कुल लागत [i-1] + लाइन लागत [i] [जे]; समाधान [जे] =मैं; } } } dispSolution(समाधान, आकार);}मुख्य() { int wordLenArr[] ={3, 2, 2, 5}; इंट एन =4; इंट मैक्सविड्थ =6; वर्डव्रैप (वर्डलेनएआर, एन, मैक्सविड्थ);} आउटपुट
पंक्ति संख्या 1:शब्द संख्या:1 से 1पंक्ति संख्या 2:शब्द संख्या:2 से 3पंक्ति संख्या 3:शब्द संख्या:4 से 4