zoukankan      html  css  js  c++  java
  • 8.7贪心策略例题:字典序最小问题

    字典序最小问题:
    给一个定长为N的字符串S,构造一个字符串T,长度也为N。
    起初,T是一个空串,随后反复进行下列任意操作
    1. 从S的头部删除一个字符,加到T的尾部
    2. 从S的尾部删除一个字符,加到T的尾部
    目标是最后生成的字符串T的字典序尽可能小

    1≤N≤2000
    字符串S只包含大写英文字母

    输入:字符串S
    输出:字符串T
    POJ - 3617 要求每80个字符换行输出

    思路:
    用StringBuilder接收字符串s,在用String s1接收一个翻转字符串后的s。
    s和s1的首字符不断比较大小,谁大就把当前首字符添加到T中,并且当前的字符串等于第二个字符开始到结尾的所有字符,直到T的长度大于s的长度就退出循环。
    注意每行80个字符,循环里要计数。

     1 import java.util.Scanner;
     2 
     3 public class Eight_7贪心策略例题_字典序最小问题 {
     4     public static void main(String[] args) {
     5         Scanner in = new Scanner(System.in);
     6         int N = in.nextInt();
     7         StringBuilder s = new StringBuilder();
     8         for(int i = 0; i < N; i++){
     9             s.append(in.next());
    10         }
    11         f(s.toString());
    12     }
    13 
    14     private static void f(String s) {
    15         String s1 = new StringBuilder(s).reverse().toString();
    16         int N = s.length();
    17         StringBuilder t = new StringBuilder();
    18         int cnt = 0;
    19         while(t.length() < N){
    20             if(s.compareTo(s1) <= 0){
    21                 t.append(s.charAt(0));
    22                 s = s.substring(1);
    23             }else{
    24                 t.append(s1.charAt(0));
    25                 s1 = s1.substring(1);
    26             }
    27             //字符满80个就换行
    28             if(t.length()%80 == 0){
    29                 System.out.println(t.substring((cnt*80),(cnt+1)*80));
    30                 cnt++;
    31             }
    32         }
    33         //打印剩余不足以80的字符
    34         if(t.length() > cnt*80){
    35             System.out.println(s.substring(cnt*80));
    36         }
    37     }
    38 }
  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/z1110/p/12769701.html
Copyright © 2011-2022 走看看