贪心算法--POJ-3617-(Best Cow Line)字典序最小问题

点击查看:贪心算法模块精讲

贪心算法–POJ-3617-(Best Cow Line)字典序最小问题.

点击查看:原题
题目描述:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题目描述+题解分析:

在这里插入图片描述
我踏马提交第五遍,终于AC了
在这里插入图片描述

完整代码,如下:↓

import java.util.Scanner;
public class Main {
     public static void main(String[] args) {
     // TODO Auto-generated method stub
     Scanner in = new Scanner(System.in);
     int n = in.nextInt();
     StringBuffer str1 = new StringBuffer();
     for(int i=0;i<n;i++) {
         String c = in.next();
         str1.append(c);
     }
     StringBuffer str2 = new StringBuffer(str1.toString());  // str2 正向
     str1.reverse();
     String str11 = str1.toString();
     String str22 = str2.toString();
     StringBuffer str3 = new StringBuffer();
     for(int i = 0;i<n;i++) {
         if(str11.compareTo(str22)<=0) {
             str3.append(str11.charAt(0));
             str11=str11.substring(1);
         }else if(str11.compareTo(str22)>0){
             str3.append(str22.charAt(0));
             str22 = str22.substring(1);
         }
     }
     String str4 = str3.toString();
     for(int i =0;i<str4.length();i++) {
         if(i!=0 && i%80==0) System.out.println();
             System.out.print(str4.charAt(i));
     }
 }

下面这个方法的代码会超时

import java.util.Scanner;
public class Main429 {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Scanner in = new Scanner(System.in);
  int n = in.nextInt();
  StringBuffer str1 = new StringBuffer();
  for(int i=0;i<n;i++) {
   String c = in.next();
   str1.append(c);
  }
  StringBuffer str2 = new StringBuffer(str1.toString());  // str2 正向
  str1.reverse();
  StringBuffer str3 = new StringBuffer();
  for(int i = 0;i<n;i++) {
   f(str1,str2,str3,0,0);
  }
  String str4 = str3.toString();
  for(int i=0;i<str4.length();i++) {
   if(i!=0 && i%80==0) System.out.println();
   System.out.print(str4.charAt(i));
  }
 }
 public static void f(StringBuffer str1,StringBuffer str2
   ,StringBuffer str3,int i,int j) {
  if(str1.charAt(i)>str2.charAt(j)) {
   str3.append(str2.charAt(0));
   str2.delete(0,1);
  }else if(str1.charAt(i)<str2.charAt(j)){
   str3.append(str1.charAt(0));
   str1.delete(0,1);
  }else {
   f(str1, str2, str3,i+1,j+1);
  }
 }
}
发布了52 篇原创文章 · 获赞 7 · 访问量 1787

猜你喜欢

转载自blog.csdn.net/weixin_44107920/article/details/104102495