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:
Overview of Spring Boot Dev Tools
Java Program to Implement Vector API
New Features in Java 12
So sánh HashMap và HashSet trong Java
An Example of Load Balancing with Zuul and Eureka
Java Program to Implement Johnson’s Algorithm
Arrays.asList vs new ArrayList(Arrays.asList())
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Luồng Daemon (Daemon Thread) trong Java
Phương thức tham chiếu trong Java 8 – Method References
Generate Spring Boot REST Client with Swagger
Using a Spring Cloud App Starter
Guide to Java OutputStream
Tính trừu tượng (Abstraction) trong Java
Java Program to Implement Best-First Search
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Java Program to Implement Booth Algorithm
Easy Ways to Write a Java InputStream to an OutputStream
Spring Boot - Code Structure
Java Program to Check whether Undirected Graph is Connected using DFS
Zipping Collections in Java
Primitive Type Streams in Java 8
A Guide to TreeMap in Java
LinkedList trong java
Deploy a Spring Boot App to Azure
Java Program to Implement Dijkstra’s Algorithm using Set
Introduction to Spring Boot CLI
Giới thiệu Aspect Oriented Programming (AOP)
Java Program to Implement PriorityQueue API
Send email with SMTPS (eg. Google GMail)
Java Program to Represent Graph Using Adjacency Matrix
Extract links from an HTML page