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:
Spring Boot - Cloud Configuration Server
Servlet 3 Async Support with Spring MVC and Spring Security
Predicate trong Java 8
Java – Random Long, Float, Integer and Double
The Modulo Operator in Java
Spring WebFlux Filters
List Interface trong Java
Java Program to Implement Vector API
Java Program to Check if a Point d lies Inside or Outside a Circle Defined by Points a, b, c in a Pl...
Serialization và Deserialization trong java
Calling Stored Procedures from Spring Data JPA Repositories
Spring Boot - Quick Start
Java Program to Find ith Largest Number from a Given List Using Order-Statistic Algorithm
Removing all Nulls from a List in Java
Java Program to Check if a Given Set of Three Points Lie on a Single Line or Not
Adding Shutdown Hooks for JVM Applications
Quick Intro to Spring Cloud Configuration
Java Program to Generate All Possible Combinations of a Given List of Numbers
Introduction to PCollections
Java Program to Implement Gale Shapley Algorithm
Java Program to Implement Affine Cipher
Send an email using the SMTP protocol
Java Program to Solve a Matching Problem for a Given Specific Case
Create Java Applet to Simulate Any Sorting Technique
Java – File to Reader
Guide to java.util.Formatter
Guava CharMatcher
Java Program to Implement Knapsack Algorithm
Java Program to Perform Insertion in a 2 Dimension K-D Tree
A Quick Guide to Using Keycloak with Spring Boot
ETags for REST with Spring
Java Program to Implement Range Tree