题目链接:P1087 FBI树
程序说明:
后序遍历+判断条件,注意indexOf()可以判断子串是否存在(一开始没想到用indexOf)
代码如下:
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
String s = new String();
int n;
Scanner in = new Scanner(new BufferedInputStream(System.in));
n = in.nextInt();
s = in.next();
System.out.println(after(s));
}
static public char after(String s) {
if(s.length() > 1) {
System.out.print(after(s.substring(0, s.length()/2)));
System.out.print(after(s.substring(s.length()/2, s.length())));
}
if(s.indexOf("0") < 0)
return 'I';
else if(s.indexOf("1") < 0)
return 'B';
else
return 'F';
}
}
import java.util.*;
import java.io.*;
public class Main {
static int p, q, r;
public static void main(String[] args) {
String s = new String();
int n;
Scanner in = new Scanner(new BufferedInputStream(System.in));
n = in.nextInt();
s = in.next();
System.out.println(after(s));
}
static public char after(String s) {
//不能在这里初始化p,q
if(s.length() > 1) {
System.out.print(after(s.substring(0, s.length()/2)));
System.out.print(after(s.substring(s.length()/2, s.length())));
}
p = 0;
q = 0;
char a[] = s.toCharArray();
for(int i = 0; i < a.length; i++) {
if(a[i] == '0')
p++;
else if(a[i] == '1')
q++;
}
if(p == s.length())
return 'B';
else if(q == s.length())
return 'I';
else
return 'F';
}
}