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 Boot with Multiple SQL Import Files
Convert Time to Milliseconds in Java
Java Program to Compare Binary and Sequential Search
Introduction to Spring Security Expressions
Recommended Package Structure of a Spring Boot Project
Java Program to Implement Adjacency List
Retrieve User Information in Spring Security
Một số tính năng mới về xử lý ngoại lệ trong Java 7
Java Program to Perform Searching Based on Locality of Reference
Write/Read cookies using HTTP and Read a file from the internet
Understanding Memory Leaks in Java
Giới thiệu SOAP UI và thực hiện test Web Service
Guide to Character Encoding
New Features in Java 14
Java Program to Implement Extended Euclid Algorithm
Java Program to Implement Sorted Array
Mapping Nested Values with Jackson
Use Liquibase to Safely Evolve Your Database Schema
Consuming RESTful Web Services
Lập trình đa luồng với CompletableFuture trong Java 8
Đồng bộ hóa các luồng trong Java
“Stream has already been operated upon or closed” Exception in Java
Java Program to Implement Fermat Factorization Algorithm
Spring Cloud AWS – RDS
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
HttpClient 4 – Send Custom Cookie
Jackson – Bidirectional Relationships
HandlerAdapters in Spring MVC
Ignore Null Fields with Jackson
Concurrent Test Execution in Spring 5
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Jackson – Unmarshall to Collection/Array