LCD显示器UVa在线判断超出时限

时间:2017-01-14 12:59:33

标签: java onlinejudge

我正在努力解决液晶显示器挑战。但是在UVa在线判断中我超出了时间限制,所以这意味着我做的方式还不够好。

有人可以建议我如何改进我的代码吗?我正在粘贴代码(它是使用西班牙语变量名称键入的,所以我在这里给你翻译所以你可以按照线程)。

总结我使用的解决方法:我将所有的绘画过程分为五个部分(上半部分,上半部分,一半,下半部分和下半部分),这些部分位于开关盒内,每个部分内部都有一个for循环处理要显示为字符串的数字,我每次都得到每个数字(charAt(n)),并根据该部分中数字的特征,每次都在另一个for循环的帮助下进行绘画。 / p>

例如在上半部分,除了一个和四个之外的所有数字都是这样绘制的:“----....-”

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
public class Main{

    public static void main (String[] args){
        Scanner sc= new Scanner(System.in);
        int tam=sc.nextInt();//this is the size
        String num=sc.next();//this is the number to be displayed
        while(tam!=0){
            dibujar(tam, num);
            tam=sc.nextInt();
            num=sc.next();
        }
    }

    public static void dibujar(int tam, String num){//this method makes all the drawing
        int ancho=tam+2;//s+2 columns
        int largo=2*tam+3;//2s+3 rows
        int cont=0;
        String numAct="";
        String parte="";
        String partes[]={"sup", "medSup", "med", "medInf", "inf"};
        while(cont!=5){
            parte=partes[cont];
            cont++;
            switch(parte){
                case("sup"):
                    for(int i=0; i<num.length();i++){
                        numAct=num.charAt(i)+"";//gets the next number
                        if(numAct.equals("0") || numAct.equals("2") || numAct.equals("3") || numAct.equals("5") || numAct.equals("6") || numAct.equals("7") || numAct.equals("8") || numAct.equals("9")){
                            System.out.print(" ");
                            for(int j=0; j<ancho-2;j++){
                                System.out.print("-");
                            }
                            System.out.print(" ");
                        }
                        else if(numAct.equals("1") || numAct.equals("4")){
                            for(int j=0; j<ancho;j++){
                                System.out.print(" ");
                            }
                        }System.out.print(" ");
                    }
                    System.out.println();
                    break;
                case("medSup"):
                    for(int k=0;k<(largo-3)/2;k++){
                        for(int i=0; i<num.length();i++){
                            numAct=num.charAt(i)+"";
                            if(numAct.equals("1") || numAct.equals("2") || numAct.equals("3") || numAct.equals("7")){
                            System.out.print(" ");
                            for(int j=0; j<ancho-2;j++){
                                System.out.print(" ");
                            }
                            System.out.print("|");
                        }
                        else if(numAct.equals("4")){
                            System.out.print("|");
                            for(int j=0; j<ancho-2;j++){
                                System.out.print(" ");
                            }
                            System.out.print("|");
                        }
                        else if(numAct.equals("5") || numAct.equals("6")){
                            System.out.print("|");
                            for(int j=0; j<ancho-1;j++){
                                System.out.print(" ");
                            }
                        }
                        else if(numAct.equals("8") || numAct.equals("9") || numAct.equals("0")){
                            System.out.print("|");
                            for(int j=0; j<ancho-2;j++){
                                System.out.print(" ");
                            }
                            System.out.print("|");
                        }
                        System.out.print(" ");
                        }
                        System.out.println();
                    }
                    break;
                case("med"):
                    for(int i=0; i<num.length();i++){
                        numAct=num.charAt(i)+"";
                        if(numAct.equals("1") || numAct.equals("7") || numAct.equals("0")){
                            for(int j=0; j<ancho;j++){
                                System.out.print(" ");
                            }
                        }
                        else if(numAct.equals("2") || numAct.equals("3") || numAct.equals("4") || numAct.equals("5") || numAct.equals("6") || numAct.equals("8") || numAct.equals("9")){
                            System.out.print(" ");
                            for(int j=0; j<ancho-2;j++){
                                System.out.print("-");
                            }
                            System.out.print(" ");
                        }
                        System.out.print(" ");
                    }
                    System.out.println();
                    break;
                case("medInf"):
                    for(int k=0;k<(largo-3)/2;k++){
                        for(int i=0; i<num.length();i++){
                            numAct=num.charAt(i)+"";
                                if(numAct.equals("1") || numAct.equals("3") || numAct.equals("4") || numAct.equals("5") || numAct.equals("7") || numAct.equals("9")){
                                for(int j=0; j<ancho-1;j++){
                                    System.out.print(" ");
                                }
                                System.out.print("|");
                            }
                            if(numAct.equals("2")){
                                System.out.print("|");
                                for(int j=0; j<ancho-1;j++){
                                    System.out.print(" ");
                                }
                            }
                            if(numAct.equals("6") || numAct.equals("8") || numAct.equals("0")){
                                System.out.print("|");
                                for(int j=0; j<ancho-2;j++){
                                    System.out.print(" ");
                                }
                                System.out.print("|");
                            }
                            System.out.print(" ");
                        }
                        System.out.println();
                    }
                    break;
                case("inf"):
                    for(int i=0; i<num.length();i++){
                        numAct=num.charAt(i)+"";
                        if(numAct.equals("1") || numAct.equals("4") || numAct.equals("7")){
                            for(int j=0; j<ancho;j++){
                                System.out.print(" ");
                            }
                        }
                        if(numAct.equals("2") || numAct.equals("3") || numAct.equals("5") || numAct.equals("6") || numAct.equals("8") || numAct.equals("9") || numAct.equals("0")){
                            System.out.print(" ");
                            for(int j=0; j<ancho-2;j++){
                                System.out.print("-");
                            }
                            System.out.print(" ");
                        }
                        System.out.print(" ");
                    }
                    System.out.println();
                    break;
            }
        }

    }
}

0 个答案:

没有答案