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 Data JPA @Modifying Annotation
Java Program to Perform Finite State Automaton based Search
Java Program to Encode a Message Using Playfair Cipher
Java Program to Check Whether a Given Point is in a Given Polygon
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Java Program to Implement Min Heap
Toán tử instanceof trong java
File Upload with Spring MVC
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
An Introduction to ThreadLocal in Java
So sánh HashSet, LinkedHashSet và TreeSet trong Java
How to Manually Authenticate User with Spring Security
Java Program to Implement LinkedBlockingDeque API
Custom HTTP Header with the HttpClient
Spring AMQP in Reactive Applications
Java Program to Represent Graph Using Adjacency List
Use Liquibase to Safely Evolve Your Database Schema
Concurrent Test Execution in Spring 5
Java Program to Find the Minimum value of Binary Search Tree
Optional trong Java 8
Sorting Query Results with Spring Data
Spring Cloud AWS – S3
Spring Boot - Logging
Refactoring Design Pattern với tính năng mới trong Java 8
Java Program to Check Whether an Input Binary Tree is the Sub Tree of the Binary Tree
Java Program to Implement Splay Tree
Java Program to Create a Random Linear Extension for a DAG
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Configure a Spring Boot Web Application
Functional Interface trong Java 8
The Dining Philosophers Problem in Java
Java – Convert File to InputStream