本文介绍了这段代码出了什么问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码在SPOJ上给出错误答案,但在ideone上运行完美(已经尝试了数百个测试用例)。



当我使用确切的逻辑和时使用C语言实现它然后它在SPOJ上完美运行。



ideone链接:www.ideone.com/MUVrrE

关于spoj的问题: www.spoj.com/problems/ONP/



This code is giving "wrong answer" on SPOJ but works perfectly on ideone (have tried hundreds of test cases).

When I use the exact logic and implement it using C language then it works perfectly on SPOJ.

ideone link : www.ideone.com/MUVrrE
Problem on spoj : www.spoj.com/problems/ONP/​

import java.io.*;
class abc
{
public static void main(String[] args) throws Exception
{
try{
    String x="",y="",str="";
    String [] A= new String[20];
    String op="";
    int i=0, j=0, k=0, ctr=0, n=0;
    BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
    n=Integer.parseInt(br.readLine());
    for(i=0;i<n;i++)
        A[i] = br.readLine();
    for(k=0;k<n;k++)
        {
        str=A[k];
        for(i=0;i<str.length();i++)
            {
            if(str.charAt(i)=='(')
                {
                ctr++;
                for(j=i+1;j<str.length();j++)
                    {
                    if((str.charAt(j)=='+' || str.charAt(j)=='-' || str.charAt(j)=='*' || str.charAt(j)=='/' || str.charAt(j)=='^') && ctr==1)
                        {
                        op+=str.charAt(j);
                        x=str.substring(0,j);
                        y=str.substring(j+1);
                        str=x+y;
                        }
                    if(str.charAt(j)=='(')
                        ctr++;
                    if(str.charAt(j)==')')
                        ctr--;
                    if(ctr==0)
                        {
                        x= str.substring(0,j);
                        y= str.substring(j);
                        str= x+ op+ y;
                        op="";
                        break;
                        }
                    }
                }
                ctr=0; op="";
                }
            for(i=0;i<str.length();i++)
                {
                if(str.charAt(i)!=')' && str.charAt(i)!='(')
                    System.out.print(str.charAt(i));
                }
            if(k!=n-1)
                System.out.println();
            }
        }
    catch(Exception e)
        {
        return;
        }
    }
}

推荐答案


这篇关于这段代码出了什么问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-21 01:10