網易運維開發崗筆試題目
阿新 • • 發佈:2019-02-02
題目描述:
假設你去超市買蘋果,現在超市有兩種包裝的蘋果:一種一袋裡面裝6個蘋果,另一種是一袋裡面裝8個蘋果。
現在假設你要買88個蘋果,就有如下幾種組合:
6個蘋果的袋數為:0 8個蘋果的袋數為:11
6個蘋果的袋數為:4 8個蘋果的袋數為:8
6個蘋果的袋數為:8 8個蘋果的袋數為:5
6個蘋果的袋數為:12 8個蘋果的袋數為:2
假設你去超市買蘋果,現在超市有兩種包裝的蘋果:一種一袋裡面裝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("無法購買"); } } } }