微软一道简单笔试题
题目非常简单,主要是读控制台输入数据有些忘了,所以折腾有点久。写的好像有点复杂,最终还是实现了。。。。
public class MaxFont { int n; int p; int w; int h; public MaxFont(int n,int p,int w,int h){ this.n=n; this.p=p; this.w=w; this.h=h; } public static void main(String[] args) throws Exception { // TODO Auto-generated method stub ArrayList<String> inputList=new ArrayList<String>(); Scanner sc=new Scanner(System.in); int numOfCase=Integer.parseInt(sc.nextLine()); int[] result=new int[numOfCase]; int i=0; int s=0; while(i<2*numOfCase-1){ String npwn=sc.nextLine(); String parCont=sc.nextLine(); String[] temp=npwn.split(" "); int[] intTemp=new int[temp.length]; for(int j=0;j<temp.length;j++){ intTemp[j]=Integer.parseInt(temp[j]); } String[] temp2=parCont.split(" "); int[] intTemp2=new int[temp2.length]; for(int j=0;j<temp2.length;j++){ intTemp2[j]=Integer.parseInt(temp2[j]); } MaxFont mf=new MaxFont(intTemp[0], intTemp[1], intTemp[2], intTemp[3]); int t=mf.maxFont(intTemp2); result[s++]=t; i=i+2; } for (int m : result) { System.out.println(m); } } public int maxFont(int[] arr){ int maxFont=0; int pages=0; int remainRows=0; while(pages<p){ maxFont++; pages=0; remainRows=0; int w1=w/maxFont; int h1=h/maxFont; for(int i=0;i<n;i++){ pages+=arr[i]/(w1*h1); remainRows+=arr[i]%(w1*h1); } pages+=remainRows/h1+1; } return maxFont; } }