一道关于蓝桥杯java组的练习题,运行没有问题可是一提交到系统就显示错误,求各位大神赐教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道关于蓝桥杯java组的练习题,运行没有问题可是一提交到系统就显示错误,求各位大神赐教相关的知识,希望对你有一定的参考价值。

import java.io.*;
public class Main
public static void main(String[] args) throws NumberFormatException,IOException
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(buf.readLine());
String str[]=new String[n];
for(int i=0;i<n;i++)

str[i]=buf.readLine();

for(int j=0;j<n;j++)

transform(str[j]);



private static void transform(String s)
StringBuffer st=new StringBuffer();
char c[]=s.toCharArray();
for(int i=0;i<c.length;i++)

switch(c[i])

case'0':
st.append("0000");
break;

case'1':
st.append("0001");
break;

case'2':
st.append("0010");
break;

case'3':
st.append("0011");
break;

case'4':
st.append("0100");
break;

case'5':
st.append("0101");
break;

case'6':
st.append("0110");
break;

case'7':
st.append("0111");
break;

case'8':
st.append("1000");
break;

case'9':
st.append("1001");
break;

case'A':
st.append("1010");
break;

case'B':
st.append("1011");
break;

case'C':
st.append("1100");
break;

case'D':
st.append("1101");
break;

case'E':
st.append("1110");
break;

case'F':
st.append("1111");
break;



transform_02(st);

public static void transform_02(StringBuffer s)
int i=s.length();
if(i%3==0)
if(s.substring(0,3).equals("000"));
s.delete(0,3);

if(i%3==1)
if(s.substring(0,1).equals("0"))
s.delete(0, 1);
else
s.insert(0,"00");

if(i%3==2)
if(s.substring(0,2).equals("00"))
s.delete(0, 2);
else
s.insert(0, "0");
//s.insert(0, "0");

int n=s.length()/3;
String s1[]=new String[n];
StringBuffer sbf=new StringBuffer();
for(int j=0;j<n;j++)

s1[j]=s.substring(j*3,j*3+3);
if(s1[j].equals("000"))
sbf.append("0");
if(s1[j].equals("001"))
sbf.append("1");
if(s1[j].equals("010"))
sbf.append("2");
if(s1[j].equals("011"))
sbf.append("3");
if(s1[j].equals("100"))
sbf.append("4");
if(s1[j].equals("101"))
sbf.append("5");
if(s1[j].equals("110"))
sbf.append("6");
if(s1[j].equals("111"))
sbf.append("7");

String s2=sbf.toString();
System.out.println(s2);



这道题的题目是:是十六进制转化成八进制的题
问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
  输出n行,每行为输入对应的八进制正整数。
注意
  输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
提示
  先将十六进制数转换成某进制数,再由某进制数转换成八进制。

输入的十六进制数不会有前导0,比如012A。输出的八进制数也不能有前导0
你没有实现这一点。。。所以报错
参考技术A 提交系统报错 ,什么系统? 参考技术B 额。。。jdk里面不是有现成的接口嘛

蓝桥杯练习系统—算法训练 未名湖畔的烦恼

问题描述
  每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,
每天下午收工后,常常一双冰鞋都不剩。
  每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。
现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。
(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)
输入格式
  两个整数,表示m和n
输出格式
  一个整数,表示队伍的排法的方案数。
样例输入
3 2
样例输出
5
数据规模和约定
  m,n∈[0,18]

分析:枚举出所有情况再进行逐个分析

代码:

#include<iostream>
using namespace std;
int m, n;
int ans = 0;
int a[40];
int b[40];
void solve(int cur) {
    if(cur == m+n) {
        int flag = 0;
        for(int i = 0; i < m+n; i++) {
            if(b[i]) flag++; 
            else flag--;
            if(flag < 0) break;  
        }
        if(flag >= 0) ans++;
    } else for(int i = 0; i < m+n; i++) {
        if(!i || a[i] != a[i-1]) {
            int c1 = 0, c2 = 0;
            for(int j = 0; j < cur; j++) if(a[i] == b[j]) c1++;
            for(int j = 0; j < m+n; j++) if(a[i] == a[j]) c2++;
            if(c1 < c2) {
                b[cur] = a[i];
                solve(cur+1);
            }    
        }
    }
}
int main() {
    cin >> m >> n;
    for(int i = 0; i < m; i++) a[i] = 1;
    for(int i = m; i < n; i++) a[i] = 0; 
    solve(0);
    cout << ans << endl;
}

 

以上是关于一道关于蓝桥杯java组的练习题,运行没有问题可是一提交到系统就显示错误,求各位大神赐教的主要内容,如果未能解决你的问题,请参考以下文章

算法笔记_063:蓝桥杯练习 送分啦(Java)

蓝桥杯基础练习 java 01字串 进制转换

大一零基础,蓝桥杯该不该报名?

蓝桥杯练习系统—算法训练 未名湖畔的烦恼

蓝桥杯-基础练习 :java 数列排序问题

Java蓝桥杯--基础练习数列特征