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:
Jackson – Marshall String to JsonNode
Java Program to implement Circular Buffer
Guava – Join and Split Collections
Basic Authentication with the RestTemplate
Java Program to Implement Solovay Strassen Primality Test Algorithm
Java Program to Create the Prufer Code for a Tree
HttpClient 4 – Send Custom Cookie
Java Program to Implement ConcurrentLinkedQueue API
Object Type Casting in Java
Guide to java.util.concurrent.Future
Find the Registered Spring Security Filters
Spring’s RequestBody and ResponseBody Annotations
A Guide to Java 9 Modularity
Java Multi-line String
Lập trình đa luồng với CompletableFuture trong Java 8
Introduction to the Java ArrayDeque
Handling Errors in Spring WebFlux
Java Program to Create a Random Linear Extension for a DAG
Lớp Properties trong java
Java Program to Implement Hash Tables chaining with Singly Linked Lists
Configuring a DataSource Programmatically in Spring Boot
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Spring WebClient Requests with Parameters
Hướng dẫn Java Design Pattern – Observer
ExecutorService – Waiting for Threads to Finish
Java Program to Implement ConcurrentHashMap API
Queue và PriorityQueue trong Java
Debug a JavaMail Program
Jackson – JsonMappingException (No serializer found for class)
Java Program to implement Sparse Vector
JPA/Hibernate Persistence Context
Request Method Not Supported (405) in Spring