1. 程式人生 > >網易運維開發崗筆試題目

網易運維開發崗筆試題目

題目描述:
 假設你去超市買蘋果,現在超市有兩種包裝的蘋果:一種一袋裡面裝6個蘋果,另一種是一袋裡面裝8個蘋果。
  
 現在假設你要買88個蘋果,就有如下幾種組合:
  6個蘋果的袋數為:0  8個蘋果的袋數為:11
 6個蘋果的袋數為:4  8個蘋果的袋數為:8
 6個蘋果的袋數為:8  8個蘋果的袋數為:5
 6個蘋果的袋數為:12  8個蘋果的袋數為:2

 但是為了總的袋數最少,你就的選擇6個蘋果的袋數為:0  8個蘋果的袋數為:11

如果無法組合,就無法購買

我本人並沒有參見網易運維的筆試,只是一個同學問我,於是寫了一下,希望對需要的人有所幫助。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class PurchaseApple {
	
	public static void main(String[] args) throws NumberFormatException, IOException{		
		while(true){
			int n6=0;   //6個袋數
	 		int n8=0;   //8個袋數
			int Num = 0;   //蘋果總的個數
			BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("請輸入購買蘋果的總數:");
			Num = Integer.parseInt(buf.readLine());
			if(Num%(8)==0){
				n6=0;
				n8=Num/8;
			}else{
				for (int i = Num/8; i >= 0; i--) {
					int temp = Num-8*i;
					if((temp%6)==0){
						if(n6==0&&n8==0){  //第一次賦值
							n6 = temp/6;
							n8 = i;
			 			}else if((n6+n8)>(i+(temp/6))){  //將此次蘋果袋數的總數與上一次進行比較,如果小於上次袋數的總數,則重新賦值
			 				n6 = temp/6;
							n8 = i;
			 			}							
					}
				}
			}		
	 		System.out.println("最後選擇:"+"\r"+"6個蘋果的袋數為:"+n6+"  8個蘋果的袋數為:"+n8);		
			if(n6==0 && n8==0){
				System.out.println("無法購買");
			}	
		}
		
	}
}