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:
Apache Commons Collections MapUtils
Hướng dẫn sử dụng luồng vào ra nhị phân trong Java
Reactive Flow with MongoDB, Kotlin, and Spring WebFlux
Spring Cloud AWS – RDS
Java Program to Implement Miller Rabin Primality Test Algorithm
Converting Between a List and a Set in Java
Hướng dẫn Java Design Pattern – Decorator
Java Program to do a Depth First Search/Traversal on a graph non-recursively
How to Use if/else Logic in Java 8 Streams
CyclicBarrier in Java
What is a POJO Class?
Java Program to Implement RoleList API
Java Program to Implement HashSet API
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Hamcrest Collections Cookbook
Custom Thread Pools In Java 8 Parallel Streams
Find the Registered Spring Security Filters
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Spring RequestMapping
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
Introduction to Spring Data REST
Spring Security 5 – OAuth2 Login
Java Program to Implement Sorted List
Introduction to the Functional Web Framework in Spring 5
Spring Boot Security Auto-Configuration
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line
Hướng dẫn Java Design Pattern – MVC
Java Program to Implement ConcurrentHashMap API
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Java Program to Implement Sorted Circularly Singly Linked List
Java – Write an InputStream to a File