首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

USACO考试题beads的两种解法

2013-04-05 
USACO试题beads的两种解法package Karl.Waterimport java.io.BufferedReaderimport java.io.FileNotFoun

USACO试题beads的两种解法

package Karl.Water;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;public class beads1 {List<Integer> list = new ArrayList<Integer>();public int judge(String s){if(s.charAt(0)=='w'){return judgeE(s);}else{return judgeB(s);}}public int judgeE(String s){int result=0;int j=0;char c=s.charAt(s.length()-1);for(int k=s.length()-1;k>0;k--){j++;if(c!=s.charAt(k-1)&&s.charAt(k-1)!='w'){list.add(j);System.out.println(j);j=0;c=s.charAt(k-1);}}int h = 0;for(int k=0;k<s.length()-1;k++){if(s.charAt(k)==s.charAt(k+1)){h++;}}//System.out.println(h+" "+s.length()/2);if(h==(s.length()-1)){list.add((s.length()/2));}list.add(0);int size = list.size();for(int p=0;p<size;p++){if(p==size-1){result = result>(list.get(p)+list.get(0))?result:(list.get(p)+list.get(0));}else{result = result>(list.get(p)+list.get(p+1))?result:(list.get(p)+list.get(p+1));}}return result;}public int judgeB(String s){int result=0,f=0;int j=0;char c=s.charAt(0);for(int k=0;k<s.length()-1;k++){j++;if(c!=s.charAt(k+1)&&s.charAt(k+1)!='w'){list.add(j);j=0;c=s.charAt(k+1);}}int h = 0;for(int k=0;k<s.length()-1;k++){if(s.charAt(k)==s.charAt(k+1)){h++;}}//System.out.println(h+" "+s.length()/2);if(h==(s.length()-1)){list.add((s.length()/2));}list.add(0);int size = list.size();for(int p=0;p<size;p++){if(p==size-1){result = result>(list.get(p)+list.get(0))?result:(list.get(p)+list.get(0));}else{result = result>(list.get(p)+list.get(p+1))?result:(list.get(p)+list.get(p+1));}}return result;}public static void main(String[] args) throws IOException {beads1 b = new beads1();BufferedReader br = new BufferedReader(new FileReader("beads.in"));PrintWriter pw = new PrintWriter (new FileWriter("beads.out"));String s1 = br.readLine();String s2 = br.readLine();pw.println(b.judge(s2+s2));pw.close();br.close();}}


热点排行