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:
The Spring @Controller and @RestController Annotations
Understanding Memory Leaks in Java
Lớp Collectors trong Java 8
Java Program to Implement PriorityQueue API
Map to String Conversion in Java
Java Program to Implement ConcurrentLinkedQueue API
Java Program to Perform Uniform Binary Search
Spring Boot - Internationalization
An Introduction to ThreadLocal in Java
Giới thiệu Google Guice – Dependency injection (DI) framework
Java Program to Implement Interpolation Search Algorithm
Spring Boot - Build Systems
Java Program to Find the Edge Connectivity of a Graph
CyclicBarrier in Java
Jackson Annotation Examples
Java 8 Stream findFirst() vs. findAny()
Tạo chương trình Java đầu tiên sử dụng Eclipse
Jackson Exceptions – Problems and Solutions
Disable DNS caching
OAuth2.0 and Dynamic Client Registration
A Guide to Java 9 Modularity
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Introduction to Thread Pools in Java
Exploring the New Spring Cloud Gateway
Giới thiệu về Stream API trong Java 8
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Hamcrest Collections Cookbook
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Java Program to Implement Expression Tree
Generating Random Dates in Java
Hướng dẫn Java Design Pattern – DAO
Java Program to Implement Queue