网易雷火 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);
	    }
			
			
	}


}



#网易##笔试题目##秋招##网易雷火#
全部评论
第一题 矩形ac  第二题 不会  第三题 任务天数 记忆化搜索 85% 第四题 分数 43% 第五题 砌墙 51% 第六题 不会 那个大佬给说说 怎么做
点赞 回复
分享
发布于 2019-09-15 20:32
第五题直接输出2过了10% 😂
点赞 回复
分享
发布于 2019-09-15 20:20
阅文集团
校招火热招聘中
官网直投
第一题你改成double也是30%,我是求的时候乘了10000才行。。
点赞 回复
分享
发布于 2019-09-15 20:25
那个化简的,我直接暴力了,对了47.5,那个任务那个我直接dfs+回溯,对了50%,太艰难了😂😂
点赞 回复
分享
发布于 2019-09-15 20:26

相关推荐

点赞 10 评论
分享
牛客网
牛客企业服务