点击查看:贪心算法模块精讲
贪心算法–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);
}
}
}