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:
Java Program to Check if it is a Sparse Matrix
Reading an HTTP Response Body as a String in Java
Hướng dẫn Java Design Pattern – Object Pool
Java Program to Implement Fibonacci Heap
Java Program to Implement AttributeList API
Hướng dẫn Java Design Pattern – Singleton
@DynamicUpdate with Spring Data JPA
Java 8 Streams peek() API
Collect a Java Stream to an Immutable Collection
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Remove All Occurrences of a Specific Value from a List
TreeSet và sử dụng Comparable, Comparator trong java
Java Program to Perform LU Decomposition of any Matrix
Iterable to Stream in Java
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Hamcrest Collections Cookbook
Working With Maps Using Streams
Java Program to Implement wheel Sieve to Generate Prime Numbers Between Given Range
Java Program to Implement Flood Fill Algorithm
Lớp Arrarys trong Java (Arrays Utility Class)
Java Program to Implement Kosaraju Algorithm
Java Program to Check the Connectivity of Graph Using DFS
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Mệnh đề Switch-case trong java
Java Program to Perform Insertion in a 2 Dimension K-D Tree
Function trong Java 8
Java Program to Implement Shoelace Algorithm
Hướng dẫn Java Design Pattern – Mediator
Spring Cloud AWS – S3
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Java Program to Implement the MD5 Algorithm
Tính kế thừa (Inheritance) trong java