记录一些遇到的算法。
题1
小明去买评估,商店做活动,提供捆绑打包销售,例如每袋3个和每袋5个的形式出售。现小明只想购买n个苹果,同时想购买尽量少的袋数⽅便携带。如果不能购买恰好n个苹果,就不会购买(可返回-1),求解输出最少的袋数。(例如:18)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import java.util.Scanner;
public class ZHYTest { public static void main(String[] args) { for (int n = 1;n < 100 ;n++){ System.out.println(n + "==》" + bagCount(n)); } }
private static int bagCount(int n){ if (n < 3 || n == 4 || n == 7){ return -1; } if (n % 5 == 0){ return n / 5; } int a = n / 5; int remain3 = n % 5; while (remain3 % 3 != 0){ a--; remain3 += 5; } return a + remain3 / 3; } }
|