This Java program Implements Word Wrap Problem.A Given a sequence of words, and a limit on the number of characters that can be put in one line (line width). Put line breaks in the given sequence such that the lines are printed neatly. Assume that the length of each word is smaller than the line width.
Here is the source code of the Java Program to Implement Word Wrap Problem.The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
public class WordWrapProblem { private static final int INFINITY = Integer.MAX_VALUE; void solveWordWrap(int l[], int n, int M) { int extras[][] = new int[n + 1][n + 1]; int lineCost[][] = new int[n + 1][n + 1]; int cost[] = new int[n + 1]; int printSol[] = new int[n + 1]; int i, j; for (i = 1; i <= n; i++) { extras[i][i] = M - l[i - 1]; for (j = i + 1; j <= n; j++) { extras[i][j] = extras[i][j - 1] - l[j - 1] - 1; } } for (i = 1; i <= n; i++) { for (j = i; j <= n; j++) { if (extras[i][j] < 0) { lineCost[i][j] = INFINITY; } else if (j == n && extras[i][j] >= 0) { lineCost[i][j] = 0; } else lineCost[i][j] = extras[i][j] * extras[i][j]; } } cost[0] = 0; for (j = 1; j <= n; j++) { cost[j] = INFINITY; for (i = 1; i <= j; i++) { if (cost[i - 1] != INFINITY && lineCost[i][j] != INFINITY && (cost[i - 1] + lineCost[i][j] < cost[j])) { cost[j] = cost[i - 1] + lineCost[i][j]; printSol[j] = i; } } } printSolution(printSol, n); } private int printSolution(int p[], int n) { int k; if (p[n] == 1) { k = 1; } else { k = printSolution(p, p[n] - 1) + 1; } System.out.println("Line number " + k + " From word no " + p[n] + " to " + n); return k; } public static void main(String...arg) { int l[] = {3,2,2,5}; int n = 4; int M = 6; WordWrapProblem wordWrapProblem = new WordWrapProblem(); wordWrapProblem.solveWordWrap(l, n, M); } }
$ javac WordWrapProblem.java $ java WordWrapProblem Line number 1 From word no 1 to 1 Line number 2 From word no 2 to 3 Line number 3 From word no 4 to 4
Related posts:
Java Program to Compute the Area of a Triangle Using Determinants
Introduction to the Java NIO Selector
Custom Error Pages with Spring MVC
Java Program to Implement Hash Tables
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Examine the internal DNS cache
Guide to ThreadLocalRandom in Java
Configure a Spring Boot Web Application
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Spring Boot - Thymeleaf
Java Program to Check whether Undirected Graph is Connected using DFS
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Java Program to Implement CountMinSketch
Java NIO2 Path API
Java Program to Delete a Particular Node in a Tree Without Using Recursion
Guide to Dynamic Tests in Junit 5
Implementing a Binary Tree in Java
Guide to Java 8’s Collectors
Reading an HTTP Response Body as a String in Java
Inject Parameters into JUnit Jupiter Unit Tests
Logging a Reactive Sequence
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Spring WebClient vs. RestTemplate
Java Program to Implement Caesar Cypher
Java Program to Perform the Sorting Using Counting Sort
Java Program to Implement Stack using Two Queues
Java Program to Implement TreeMap API
Java Program to Perform Search in a BST
Java Program to Represent Linear Equations in Matrix Form
A Guide To UDP In Java
Java Program to Implement Sorted Vector