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 Cloud AWS – Messaging Support
Java Program to Perform Partition of an Integer in All Possible Ways
Java Program to Implement K Way Merge Algorithm
The “final” Keyword in Java
Logout in an OAuth Secured Application
Java Program to Find Nearest Neighbor for Dynamic Data Set
Java Program to Implement Floyd Cycle Algorithm
Hướng dẫn Java Design Pattern – Chain of Responsibility
Java Program to Find Number of Articulation points in a Graph
Java Program to Check whether Graph is a Bipartite using BFS
Java Program to Perform Sorting Using B-Tree
Tiêu chuẩn coding trong Java (Coding Standards)
Java Program to Print only Odd Numbered Levels of a Tree
Java Program to find the number of occurrences of a given number using Binary Search approach
Java Program to Implement Euler Circuit Problem
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
The Basics of Java Security
Java Program to Check if an UnDirected Graph is a Tree or Not Using DFS
Spring Autowiring of Generic Types
Marker Interface trong Java
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Bootstrap a Web Application with Spring 5
CharSequence vs. String in Java
Quản lý bộ nhớ trong Java với Heap Space vs Stack
Java – Delete a File
Java – String to Reader
Java InputStream to String
How to Define a Spring Boot Filter?
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Using Custom Banners in Spring Boot
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
CyclicBarrier in Java