微软一道简单笔试题

题目非常简单,主要是读控制台输入数据有些忘了,所以折腾有点久。写的好像有点复杂,最终还是实现了。。。。

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;
    }

}

 

posted @ 2016-04-07 12:51  sweetxy  阅读(160)  评论(0编辑  收藏  举报