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:
A Guide to JUnit 5
A Guide to JPA with Spring
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Java Program to Implement Quick Sort Using Randomization
Java Program to Implement LinkedHashMap API
Generating Random Dates in Java
Spring Boot Annotations
Object Type Casting in Java
A Guide to BitSet in Java
XML Serialization and Deserialization with Jackson
Java Program to Implement Bubble Sort
Java Program to Solve Tower of Hanoi Problem using Stacks
Lớp Arrarys trong Java (Arrays Utility Class)
Java Program to Check if it is a Sparse Matrix
Java Program to Implement AVL Tree
Java Program to Implement Gauss Jordan Elimination
Redirect to Different Pages after Login with Spring Security
Java Program to Implement Horner Algorithm
Java Program for Douglas-Peucker Algorithm Implementation
Read an Outlook MSG file
How to use the Spring FactoryBean?
Receive email by java client
Java Program to Solve a Matching Problem for a Given Specific Case
Query Entities by Dates and Times with Spring Data JPA
Apache Commons Collections SetUtils
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Java Program to Generate Random Numbers Using Middle Square Method
Spring Boot - Application Properties
Chuyển đổi Array sang ArrayList và ngược lại
Java Program to Implement EnumMap API
Guava – Join and Split Collections
Java Program to Perform Postorder Recursive Traversal of a Given Binary Tree