网易雷火 4小时 6编程
1. 矩形排序,以面积、宽高比、宽的优先级比较进行排序;(冒泡排序即可,LZ大意只用了int,没用double,用了double应该100%);
2. 三角形的顺时针/逆时针调整();
3. 求完成多任务最小延迟天数()
4. 最简分数(例如:6,有1/6,2/6,3/6,4/6,5/6,6/6 总共6个分数,其中1/6,5/6 这2个是最简分数,就是分子分母公约数只有1,求最简分数的比率k=2/6=0.33333,求1~N中,比率k最小的数)
5.有 1*3的砖块和1*2的砖块两种,只能横着放,
|000| |00| 给定一堵墙M*N ,纵向不能出现连续的缝隙 ,问有几种砌墙方式
例如 5*2
|000||00| |00||000|
|00||000| OK , |00||000| NO
6. 仿vi编辑器
1. 矩形排序(30%,把int改成double100%,时间来不及了,提交后和同学交流才反应过来)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.omg.CORBA.PUBLIC_MEMBER;
public class juxing {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int k = 0;//数据组数,例如有K组数据,需要输出K个对应的结果
class matraix
{
int w =0;
int h = 0;
double s =0;
double ckb = 0;
int visited = 0;
public matraix(int parseInt, int parseInt2) {
// TODO 自动生成的构造函数存根
this.w = parseInt;
this.h = parseInt2;
s = this.w * this.h;
ckb = this.min(w, h);
}
void visited()
{
this.visited = 1;
}
double min(int w,int h)
{
double minnum = 0;
if(w/h > h/w)
{
minnum = h/w;
}
else
{
minnum = w/h;
}
return minnum;
}
}
ArrayList<matraix> list = new ArrayList<>();
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//br是字符流
String line = null;
while((line=br.readLine())!=null){
if(line.equals(""))//如果是空行,就跳过
continue;
String str_num = line.split(" ")[0];//
if(k==0)
{
k = Integer.parseInt(str_num);//总共有K个矩形
}
else
{
//System.out.print(k);
String[] str_num1 = line.split(" ");
int i = 1;
//System.out.print("changdu"+str_num1.length);
while(i<=k)
{
matraix m = new matraix(Integer.parseInt(str_num1[2*(i-1)]),Integer.parseInt(str_num1[2*(i-1)+1]));
list.add(m);
i++;
}
//System.out.print(list.size());
//list.forEach(a->System.out.print(a.w+" "+a.h+" "));
if(list.size()!=0)
{
int length = list.size();
double s = Double.MAX_VALUE;//面积 小的在前
double changkuanbi = 0;//长宽比 大得在前
int kuandu = 0;//宽度 小得在前
int index = 0;
//boolean mark = false;
ArrayList<matraix> list2 = new ArrayList<>();
ArrayList<Integer> indexpool = new ArrayList<>();
while(list2.size()!= k)
{
s = Double.MAX_VALUE;//面积 小的在前
changkuanbi = 0;//长宽比 大得在前
kuandu = 0;//宽度 小得在前
for(int j=0;j<length;j++)
{
if(!indexpool.contains(j))
{
if(list.get(j).s<s)//面积
{
s = list.get(j).s;
changkuanbi = list.get(j).ckb;
kuandu = list.get(j).w;
index = j;
}
else if(list.get(j).s==s)
{
if(list.get(j).ckb>changkuanbi)//长宽比
{
s = list.get(j).s;
changkuanbi = list.get(j).ckb;
kuandu = list.get(j).w;
index = j;
}
else if (list.get(j).ckb==changkuanbi)
{
if(list.get(j).w < kuandu)//宽度
{
s = list.get(j).s;
changkuanbi = list.get(j).ckb;
kuandu = list.get(j).w;
index = j;
}
else if(list.get(j).w == kuandu)
{
s = list.get(j).s;
changkuanbi = list.get(j).ckb;
kuandu = list.get(j).w;
index = j;
}
}
}
}
}
//System.out.println(index);
indexpool.add(index);
list2.add(list.get(index));
}
list2.forEach(a->System.out.print(a.w+" "+a.h+" "));
}
}
}
br.close();
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("读取字符串出错");
}
}
}
//3
//1 1 2 1 1 2
4. 最简分数(37.5%,数太大时间太久,没想到更好的办法)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
public class trangle {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int mark = 0;
int k = 0;//数据组数,例如有K组数据,需要输出K个对应的结果
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//br是字符流
String line = null;
while((line=br.readLine())!=null){
if(line.equals(""))//如果是空行,就跳过
continue;
String str_num = line.split(" ")[0];//
k = Integer.parseInt(str_num);//从1到K k个数字
function(k);
//isprime(k);
}
br.close();
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("读取字符串出错");
}
}
public static int prime(int a1 ,int a2)
{
int a = a1;
int b = a2;
int s=1;
int i;
for(i=2;i<=a&&i<=b;i++)
{
if(a%i==0&&b%i==0)
{
s=i;
}
}
return s;
}
public static void function(int num)
{
int count = 0;
double min = 1;
for(int i=1;i<=num;i++)
{
count = 0;
if(!isprime(i))
{
for(int j=1;j<=i;j++)
{
if(prime(i, j)==1)
{
count ++;
}
}
double total = i;
double temp = count/total;
if(temp<=min)
{
min = temp;
}
}
//System.out.println(count+" "+i);
}
DecimalFormat df = new DecimalFormat("#0.000000");
String str = df.format(min);
System.out.println(str);
}
public static Boolean isprime(int i)
{
int x, y, j;
y = i;
j = (int) y / 2;
for (x = 2; x <= j; x++)
{
if (y % x == 0)
{
//System.out.print("不是素数");
return false;//不是素数
}
}
if (x > j)
{
//System.out.print("是素数");
return true;
}
else
{
//System.out.print("不是素数");
return false;
}
}
}
5.砌墙(提交了几种特殊情况20.69%) import java.io.BufferedReader; import java.io.InputStreamReader; public class Makewall { public static void main(String[] args) { // TODO 自动生成的方法存根 int w = 0; int h = 0; try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//br是字符流 String line = null; while((line=br.readLine())!=null){ if(line.equals(""))//如果是空行,就跳过 continue; String str = line.split(" ")[0];// w = Integer.parseInt(str);//墙宽 str = line.split(" ")[1]; h = Integer.parseInt(str);//墙高 function(w,h); } br.close(); } catch(Exception e) { e.printStackTrace(); System.out.println("读取字符串出错"); } } public static void function(int w,int h) { if(w== 3||w==2) { System.out.print(1); } if(w==4) { System.out.print(0); } if(w==5) { System.out.print(2); } if(w==6) { System.out.print(2); } } }