도와주세요 boggle 런타임오류(nonzero return code)

  • 알고리즘꾸
    알고리즘꾸

    계속 런타임 오류가 뜨네요 어디서 잘못되었는지 알려주시면 감사하겠습니다! ㅠㅠ

    import java.io.*;
    import java.util.HashMap;
    import java.util.Scanner;
    class search_word
    {
        //처음의 5x5문자
        public char[][] a;
        //찾을 문자
        public String s;
        //메모이제이션 memo[처음문자배열의 인덱스][찾을 문자의 인덱스]
        private int[][] memo;
        public int success;
        //클래스의 생성자
        public search_word(int n)
        {
            a=new char[5][5];
            memo=new int[25][n];
            success=0;
        }
        //단어 찾는 함수 i,j=처음문자 인덱스 level=찾을 문자의 인덱스  
        public void search(int i,int j,int level)
        {
            //메모이제이션이 1인 경우 멈춤
            if(memo[5*i+j][level]==1)
                return;
            else
            {
                //스펠링이 다른 경우 return 멈춤
                if(a[i][j]!=s.charAt(level))
                {
                    memo[5*i+j][level]=1;
                    return;
                }
                else
                {
                    if(level+1==s.length())
                        success=1;
                    else
                    {
                        if(i>0)
                        {
                            search(i-1,j,level+1);
                            if(success==1)
                                return;
                        }
                        if(i<4)
                        {
                            search(i+1,j,level+1);
                            if(success==1)
                                return;
                        }
                        if(j>0)
                        {
                            search(i,j-1,level+1);
                            if(success==1)
                                return;
                        }
                        if(i<4)
                        {
                            search(i,j+1,level+1);
                            if(success==1)
                                return;
                        }
                        if(i>0&&j>0)
                        {
                            search(i-1,j-1,level+1);
                            if(success==1)
                                return;
                        }
                        if(i>0&&j<4)
                        {
                            search(i-1,j+1,level+1);
                            if(success==1)
                                return;
                        }
                        if(i<4&&j>0)
                        {
                            search(i+1,j-1,level+1);
                            if(success==1)
                                return;
                        }
                        if(i<4&&j<4)
                        {
                            search(i+1,j+1,level+1);
                            if(success==1)
                                return;
                        }
                        if(success!=1)
                            memo[5*i+j][level]=1;
                    }
                }
            }
        }
    }
    class Main
    {
        public static void main(String[] args) throws IOException
        {
            //테스트 케이스의 수
            int C;
            //입력받을 단어의 수
            int N;
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
            String str=br.readLine();
            //테스트 케이스를 입력받음
            C=Integer.parseInt(str);    
            for(int i=0;i<C;i++)    
            {
                char[][] arr=new char[5][5];
                //5X5 문자를 입력받는다.
                for(int j=0;j<5;j++)
                {
                    String str2=br.readLine();
                    for(int k=0;k<str2.length();k++)
                        arr[j][k]=str2.charAt(k);
                }
                //입력받을 단어의 갯수를 입력받음
                String str3=br.readLine();
                N=Integer.parseInt(str3);
                //찾을 단어를 저장할 문자열      
                String[] word=new String[N];
                //단어 찾기 성공유무 저장할 문자열
                int[] success=new int[N];
                for(int j=0;j<N;j++)
                {
                    //단어를 입력 받는다.
                    word[j]=br.readLine();
                    //클래스 변수 선언
                    search_word sw=new search_word(word[j].length());
                    sw.a=arr;
                    sw.s=word[j];
                    for(int k=0;k<5&&sw.success!=1;k++)
                    {
                        for(int l=0;l<5&&sw.success!=1;l++)
                        {
                            sw.search(k,l,0);
                        }
                    }
                    success[j]=sw.success;
    
                }
                //정답 출력
                for(int j=0;j<N;j++)
                {
                    if(success[j]==0)
                        System.out.println(word[j]+" NO");
                    else
                        System.out.println(word[j]+" YES");
                }
            }
        }
    }
    

    8년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.