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:
Guide to java.util.Formatter
Java Program to find the maximum subarray sum using Binary Search approach
Java Program to Check Whether Graph is DAG
Java Program to Implement Borwein Algorithm
Using Spring ResponseEntity to Manipulate the HTTP Response
Intro to Spring Boot Starters
Lập trình đa luồng với CompletableFuture trong Java 8
Call Methods at Runtime Using Java Reflection
Java Program to find the number of occurrences of a given number using Binary Search approach
Calling Stored Procedures from Spring Data JPA Repositories
So sánh HashMap và HashSet trong Java
HttpClient Timeout
How to Define a Spring Boot Filter?
Spring Boot - Servlet Filter
Java Program to Implement wheel Sieve to Generate Prime Numbers Between Given Range
Java Program to Implement the String Search Algorithm for Short Text Sizes
A Guide to Java SynchronousQueue
Java Program to Implement Sorting of Less than 100 Numbers in O(n) Complexity
Guide to Selenium with JUnit / TestNG
Converting Between Byte Arrays and Hexadecimal Strings in Java
Guide to Character Encoding
Sắp xếp trong Java 8
Java Program to Find Nearest Neighbor for Static Data Set
File Upload with Spring MVC
LinkedList trong java
A Guide to Spring Boot Admin
Composition, Aggregation, and Association in Java
Spring Boot Security Auto-Configuration
Redirect to Different Pages after Login with Spring Security
Java Program to Solve the 0-1 Knapsack Problem
How to Use if/else Logic in Java 8 Streams
Guide to @JsonFormat in Jackson