算法竞赛入门经典java版程序ch4 UVa213
来源:互联网 发布:查看占用80端口的进程 编辑:程序博客网 时间:2024/05/18 15:51
本题runtimeError,还没找到原因。
以后有时间再来找问题。
package ch4.uva213;import java.util.HashMap;import java.util.Scanner;//UVa213//此题runtime Error。 刘汝佳的题解可以过。但不如是何原因class Main {static final int x = 8;static String[] dic = new String[8*(1<<8)];// 题目中的2进制表static String[] dic2 = new String[10];// 不大于7的数的2进制表static String header = "";static String encode = "";static HashMap<String, String> map = new HashMap<String, String>();// 整数转2进制字符串,补前导零public static String int2b(int a, int cnt) {// System.out.println("a= "+a+" cnt="+cnt);String leaderZero = "";String b = Integer.toBinaryString(a);for (int i = 0; i < cnt - b.length(); i++) {leaderZero += "0";}b = leaderZero + b;return b;}// 2进制字符串,查表得到整数public static int b2Int(String s) {for (int i = 0; i < 10; i++) {if (dic2[i].equals(s)) {return i;}}return 0;}// 按题打表dic,dic2public static void init() {int count = 0;String[][] temp = new String[x][];for (int i = 0; i < x; i++) {int cnt = (int) Math.pow(2, i) - 1;// 有几个数temp[i] = new String[cnt];for (int j = 0; j < cnt; j++) {int k = count++;dic[k] = int2b(j, i);// 位数为i//System.out.print(dic[k]+",");}}// 初始化 1-7的2进制字串for (int i = 0; i < 10; i++) {dic2[i] = int2b(i, 3);}}//全111判断public static boolean isAll1(String s){char[] chrArr=s.toCharArray();for(int i=0;i<chrArr.length;i++){if(chrArr[i]=='0')return false;}return true;}public static void makeMap(String line) {char[] chrArr = line.toCharArray();for (int i = 0; i < chrArr.length; i++) {map.put(dic[i], "" + chrArr[i]);}}public static void print() {for (int i = 0; i < 256; i++) {System.out.print(dic[i] + ",");}}public static void main(String[] args) {init();// print();Scanner cin = new Scanner(System.in);String line = "";boolean isEncoder = false;int count=0;BE:while ((line = cin.nextLine()) != null) {//文件尾//header编码头if(line.length()<1)continue;if (!(line.charAt(0) == '0' || line.charAt(0) == '1')) {//初始化所有数据map.clear();encode="";header="";//header = line;makeMap(line);// 将head的每一个字母与 code进行映射isEncoder = true;if(count!=0){ //在除第1行外,前面打回车System.out.println();}continue;}if (isEncoder == true) {encode += line;//System.out.println("encode=" + encode);if (encode.length()>=3&&encode.substring(encode.length() - 3, encode.length()).equals("000")) {count++;// 每次读取len个字符并查表输出int i = 0;String key = "";boolean isStart = true;int len = 0;while (true) {if(i>=encode.length()-3){break;}if (isStart) {// 算第一段的长度len = b2Int(encode.substring(i, i+3));i = i + 3;if(len==0) continue BE;// String// newEncode=encode.substring(len-1,encode.length()-3);isStart = false;} else {key = encode.substring(i, i + len);//System.out.println("i="+i+" "+key+", ");i = i + len;if ( isAll1(key)) {// 全1 结尾isStart = true;continue;}System.out.print(map.get(key));}}}}}}}/*TNM AEIOU0010101100011101000100111011001111000$#**\0100000101101100011100101000$#* *\0100000101101100011100101000*/
阅读全文
0 0
- 算法竞赛入门经典java版程序ch4 UVa213
- 算法竞赛入门经典java版程序ch4 UVa12412
- 算法竞赛入门经典 UVa213 Message Decoding
- 算法竞赛入门经典java版程序CH3 UVA202
- 算法竞赛入门经典java版程序ch3 UVa272
- 算法竞赛入门经典java版程序CH3 UVa1368
- 算法竞赛入门经典java版程序CH3 UVA1585
- 算法竞赛入门经典java版程序CH3 uva1587
- 算法竞赛入门经典java版程序ch3 UVa1588
- 算法竞赛入门经典java版程序ch3 Uva10340
- 算法竞赛入门经典(第二版) 例题4-4 信息编码(Message Decoding) UVa213 Finals1991 (二进制)
- 算法之路二:刘汝佳算法竞赛入门经典 信息解码 UVA213
- 算法竞赛入门经典P89 卡片游戏 java版
- 算法竞赛入门经典
- 算法竞赛入门经典
- 《算法竞赛入门经典(第2版)》
- 算法竞赛入门经典java实现第一章--语言入门篇
- 算法竞赛入门经典 例题7-1 最优程序
- Rightware的Kanzi界面很快你的全液晶汽车仪表盘
- Python的序列(2)-元组
- CommonsMultipartFile 文件上传
- HDU 6126 Give out candies (贼巧妙的最小割)
- PAT1060——Are They Equal,利用字符串解题
- 算法竞赛入门经典java版程序ch4 UVa213
- 用Shell写一个SSH的小工具
- 一个初学者的vue2.0练习程序
- leetcode[Shortest Unsorted Continuous Subarray]//待整理多种解法
- Handler———理解和应用
- nefu117 素数个数的位数(素数定理)
- 原型模式
- Yii文件上传
- 经典算法之七种排序