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:
Giới thiệu Java 8
Java Program to Implement LinkedList API
Spring Boot - Application Properties
Spring Boot - File Handling
Java Program to Describe the Representation of Graph using Adjacency List
Spring Boot - Bootstrapping
Comparing Dates in Java
Java 8 – Powerful Comparison with Lambdas
Java Program to Check whether Graph is a Bipartite using BFS
Java Program to Implement Maximum Length Chain of Pairs
Spring Autowiring of Generic Types
Quick Guide to @RestClientTest in Spring Boot
Setting Up Swagger 2 with a Spring REST API
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Java Program to Implement Coppersmith Freivald’s Algorithm
Checking for Empty or Blank Strings in Java
JUnit 5 for Kotlin Developers
A Guide to Java HashMap
Spring Cloud AWS – Messaging Support
Create Java Applet to Simulate Any Sorting Technique
Java – Create a File
Spring Boot with Multiple SQL Import Files
Java – Rename or Move a File
Java Multi-line String
New Features in Java 15
Java Program to Implement Queue
Java Program to Implement Efficient O(log n) Fibonacci generator
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Tiêu chuẩn coding trong Java (Coding Standards)
Java Program to Implement Meldable Heap
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Java Program to Compute the Area of a Triangle Using Determinants