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:
Quick Guide on Loading Initial Data with Spring Boot
Disable DNS caching
The Registration Process With Spring Security
Auditing with JPA, Hibernate, and Spring Data JPA
Java Program to Find Path Between Two Nodes in a Graph
Uploading MultipartFile with Spring RestTemplate
Spring Cloud AWS – Messaging Support
File Upload with Spring MVC
Apache Commons Collections MapUtils
Java Program to Implement Fermat Primality Test Algorithm
So sánh HashMap và Hashtable trong Java
Java – Try with Resources
An Intro to Spring Cloud Task
Java Program to implement Priority Queue
Entity To DTO Conversion for a Spring REST API
Spring Boot - Batch Service
Introduction to Java Serialization
Sao chép các phần tử của một mảng sang mảng khác như thế nào?
Java InputStream to String
Thao tác với tập tin và thư mục trong Java
Java Program to Find Nearest Neighbor for Static Data Set
Một số tính năng mới về xử lý ngoại lệ trong Java 7
Java Program to Perform Searching in a 2-Dimension K-D Tree
Guide to the Synchronized Keyword in Java
Setting a Request Timeout for a Spring REST API
Quick Guide to Spring MVC with Velocity
Mảng (Array) trong Java
wait() and notify() Methods in Java
Java 8 Streams peek() API
Extra Login Fields with Spring Security
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java