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:
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Java Program to Find the Mode in a Data Set
Sort a HashMap in Java
Java Program to Implement Cartesian Tree
Query Entities by Dates and Times with Spring Data JPA
Immutable ArrayList in Java
Lớp Properties trong java
Java Program to Find Strongly Connected Components in Graphs
Default Password Encoder in Spring Security 5
Java Program to Implement Hash Tables with Linear Probing
Java Program to Implement Fermat Primality Test Algorithm
Java Program to Implement Shoelace Algorithm
Lớp Arrarys trong Java (Arrays Utility Class)
HttpClient 4 Cookbook
Tính trừu tượng (Abstraction) trong Java
Jackson Date
Convert String to int or Integer in Java
Cơ chế Upcasting và Downcasting trong java
Calling Stored Procedures from Spring Data JPA Repositories
Java Program to Implement the Hill Cypher
Spring Boot Application as a Service
Mệnh đề Switch-case trong java
Lập trình đa luồng với CompletableFuture trong Java 8
How to Replace Many if Statements in Java
Java – Convert File to InputStream
Introduction to Spring Cloud OpenFeign
Java Program to Compute DFT Coefficients Directly
Spring Security Custom AuthenticationFailureHandler
Một số ký tự đặc biệt trong Java
So sánh HashMap và Hashtable trong Java
Chuyển đổi giữa các kiểu dữ liệu trong Java
Exploring the Spring 5 WebFlux URL Matching