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:
Java 8 Collectors toMap
Hướng dẫn sử dụng String Format trong Java
Spring Boot - Admin Server
Database Migrations with Flyway
Java Program to Implement Johnson’s Algorithm
Format ZonedDateTime to String
Java Program to Implement wheel Sieve to Generate Prime Numbers Between Given Range
Hướng dẫn Java Design Pattern – Visitor
Spring Security – security none, filters none, access permitAll
Mảng (Array) trong Java
A Guide to JUnit 5 Extensions
Feign – Tạo ứng dụng Java RESTful Client
Java Program to Implement DelayQueue API
RestTemplate Post Request with JSON
Từ khóa this và super trong Java
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line
Java Program to Implement Singly Linked List
New Features in Java 9
Prevent Brute Force Authentication Attempts with Spring Security
Sắp xếp trong Java 8
Hướng dẫn Java Design Pattern – Object Pool
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Multi Dimensional ArrayList in Java
Spring WebClient Filters
Logging in Spring Boot
Optional trong Java 8
Java Program to Implement Expression Tree
Quản lý bộ nhớ trong Java với Heap Space vs Stack
Introduction to Spring MVC HandlerInterceptor
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Java Program to Convert a Decimal Number to Binary Number using Stacks
Spring Data JPA and Null Parameters