gioteen
سه شنبه 08 بهمن 1392, 13:04 عصر
سلام دوستان من کد زیر رو نوشتم که وقتی فایلهای ورودی خیلی سنگین میشن نمیشه ازش استفاده کرد.
من کدی که نوشتم و فایلهای ورودی رو قرار میدم لطفا راهنمایی کنید.
/*
* To change this license header, choose License Headers in
Project Properties.
* To change this template file, choose Tools |
Templates
* and open the template in the editor.
*/
package javaapplication2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import
java.io.FileReader;
import java.io.FileWriter;
import
java.io.IOException;
import java.util.Scanner;
/**
*
* @author J2ee
*/
public class
JavaApplication2 {
/**
* @param args the command
line arguments
*/
public
static void main(String[] args) {
BufferedReader br2=null;
try
{
String
cr2;
br2 =
new BufferedReader(new
FileReader("1.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("out.txt"));
while((cr2=br2.readLine())!=null)
{ Scanner in2 = new
Scanner(cr2);
try
{
int
a=-1;
try
{
a= Integer.parseInt(in2.next());
} catch (Exception e)
{
System.out.println("error in
input!!!");
}
BufferedReader
br=null;
int b=0;
try
{
String
cr;
br
=
new BufferedReader(new
FileReader("2.txt"));
while((cr=br.readLine())!=null &&
b!=-1)
{
Scanner in = new
Scanner(cr);
try
{
if( Integer.parseInt(in.next())<=a &&
a<=Integer.parseInt(in.next()))
b+=1;
} catch (Exception e)
{
e.printStackTrace();
}
}
writer.write
(Integer.toString(b).concat("\n"));
//System.out.println(b);
}
catch
(IOException e)
{
e.printStackTrace();
}finally{
try
{
if(br!=null)br.close();
} catch (IOException ex)
{
ex.printStackTrace();
}
}
} catch (Exception e)
{
e.printStackTrace();
}
}
writer.close();
} catch
(IOException e)
{
e.printStackTrace();
}finally{
try
{
if(br2!=null)br2.close();
//Close
writer
} catch
(IOException ex)
{
ex.printStackTrace();
}
}
}
}
در فایل یک هر سطر یک اینتجر قرار دارد. این فایل میتواند شامل یک میلیارد سطر باشد.
در فایل دو هر سطر دو اینتجر قرار دارد که یک فاصله بین آنها وجود دارد.
هدف پیدا کردن سریعترین راه برای حل مسئله هست ممنون میشم اگر راهنمایی کنید.
من کدی که نوشتم و فایلهای ورودی رو قرار میدم لطفا راهنمایی کنید.
/*
* To change this license header, choose License Headers in
Project Properties.
* To change this template file, choose Tools |
Templates
* and open the template in the editor.
*/
package javaapplication2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import
java.io.FileReader;
import java.io.FileWriter;
import
java.io.IOException;
import java.util.Scanner;
/**
*
* @author J2ee
*/
public class
JavaApplication2 {
/**
* @param args the command
line arguments
*/
public
static void main(String[] args) {
BufferedReader br2=null;
try
{
String
cr2;
br2 =
new BufferedReader(new
FileReader("1.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("out.txt"));
while((cr2=br2.readLine())!=null)
{ Scanner in2 = new
Scanner(cr2);
try
{
int
a=-1;
try
{
a= Integer.parseInt(in2.next());
} catch (Exception e)
{
System.out.println("error in
input!!!");
}
BufferedReader
br=null;
int b=0;
try
{
String
cr;
br
=
new BufferedReader(new
FileReader("2.txt"));
while((cr=br.readLine())!=null &&
b!=-1)
{
Scanner in = new
Scanner(cr);
try
{
if( Integer.parseInt(in.next())<=a &&
a<=Integer.parseInt(in.next()))
b+=1;
} catch (Exception e)
{
e.printStackTrace();
}
}
writer.write
(Integer.toString(b).concat("\n"));
//System.out.println(b);
}
catch
(IOException e)
{
e.printStackTrace();
}finally{
try
{
if(br!=null)br.close();
} catch (IOException ex)
{
ex.printStackTrace();
}
}
} catch (Exception e)
{
e.printStackTrace();
}
}
writer.close();
} catch
(IOException e)
{
e.printStackTrace();
}finally{
try
{
if(br2!=null)br2.close();
//Close
writer
} catch
(IOException ex)
{
ex.printStackTrace();
}
}
}
}
در فایل یک هر سطر یک اینتجر قرار دارد. این فایل میتواند شامل یک میلیارد سطر باشد.
در فایل دو هر سطر دو اینتجر قرار دارد که یک فاصله بین آنها وجود دارد.
هدف پیدا کردن سریعترین راه برای حل مسئله هست ممنون میشم اگر راهنمایی کنید.