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 thư viện Apache Commons Chain
Adding Parameters to HttpClient Requests
Java Program to Implement the RSA Algorithm
Apache Commons Collections SetUtils
Java Program to Implement Max Heap
Java Program to Implement the Hungarian Algorithm for Bipartite Matching
Lớp lồng nhau trong java (Java inner class)
Guide To CompletableFuture
Java Program to Implement Naor-Reingold Pseudo Random Function
Spring Boot - Database Handling
Java InputStream to Byte Array and ByteBuffer
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Java Program to Implement Sorted Doubly Linked List
Using JWT with Spring Security OAuth
Autoboxing và Unboxing trong Java
Guide to the Java Queue Interface
Java Program to Find the Median of two Sorted Arrays using Binary Search Approach
Inheritance and Composition (Is-a vs Has-a relationship) in Java
Java Program to Implement AttributeList API
Instance Profile Credentials using Spring Cloud
Guide to Mustache with Spring Boot
Adding a Newline Character to a String in Java
Java Program to Construct an Expression Tree for an Infix Expression
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Guide to Dynamic Tests in Junit 5
Jackson vs Gson
Java Program to Implement LinkedBlockingQueue API
Class Loaders in Java
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Java Program to Solve any Linear Equations
Converting Iterator to List
Java Program to Perform Stooge Sort