美團筆試

題目描述

請設計一個算法可以完成兩個用字符串存儲的整數進行相加操做,對非法的輸入則返回error

輸入描述:

輸入爲一行,包含兩個字符串,字符串的長度在[1,100]。

輸出描述:

輸出爲一行。合法狀況輸出相加結果,非法狀況輸出error

輸入

123 123
abd 123

輸出

246
Error
import java.math.BigInteger;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Scanner;
public class Main {
      public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        
        try {
            BigInteger sBigInteger=scanner.nextBigInteger();
            BigInteger sBigInteger2=scanner.nextBigInteger();
            System.out.println(sBigInteger.add(sBigInteger2));
        } catch (Exception e) {
            System.out.println("error");
        }
        }
}

 

描述java

最近天氣炎熱,小Ho每天宅在家裏叫外賣。他常吃的一家餐館一共有N道菜品,價格分別是A1, A2, ... AN元。而且若是消費總計滿X元,還能享受優惠。小Ho是一個不薅羊毛不舒服斯基的人,他但願選擇若干道不一樣的菜品,使得總價在不低於X元的同時儘可能低。算法

你能算出這一餐小Ho最少消費多少元嗎?spa

輸入設計

第一行包含兩個整數N和X,(1 <= N <= 20, 1 <= X <= 100)code

第二行包含N個整數A1, A2, ..., AN。(1 <= Ai <= 100)blog

輸出字符串

輸出最少的消費。若是小Ho把N道菜都買了還不能達到X元的優惠標準,輸出-1。it

先獲取總額sum,獲得sum與x的差值,在這個差值下看看由菜品價格組成的價格最大就能夠io

 
     
public class Main {
 
    public static void main(String[] args) throws Exception {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
 
            int n = in.nextInt(),x = in.nextInt(), sum = 0;
            int price[] =new int[n+1];
            price[0]=0;
            for(int i=1;i<n+1;i++){
                price[i] = in.nextInt();
                sum += price[i];
            }
            if(sum < x){
                System.out.println("-1");
                continue;
            }
            int m = sum - x;//得到當前的最大的菜的
            int[][] dp = new int[n+1][m+1];
            for (int i = 1; i < dp.length; i++) {
                for (int j = 1; j < dp[i].length; j++) {                
                        if (j>=price[i]) {
                            dp[i][j]=Math.max(dp[i-1][j-price[i]]+price[i],dp[i-1][j]);//加入當前菜品所能到的剩下錢的最大值 而不是相加
                        }
                        else {
                            dp[i][j]=dp[i-1][j];
                        }
                }
            }
            System.out.println(sum - dp[n][m]);      
        }
    }
相關文章
相關標籤/搜索