Алёна собирает вещи в отпуск. С собой в самолёт она может взять ручную кладь и багаж. Для ручной клади у Алёны есть рюкзак, а для багажа – огромный чемодан. По правилам перевозки масса ручной клади не должна превосходить S кг, а багаж может быть любой массы (за сверхнормативный багаж Алёна готова доплатить). Разумеется, наиболее ценные вещи – ноутбук, фотоаппарат, документы и т. д. – Алёна хочет положить в ручную кладь. Алёна разложила все свои вещи в порядке уменьшения их ценности и начинает складывать наиболее ценные вещи в рюкзак. Она действует следующим образом – берёт самый ценный предмет, и если его масса не превосходит S, то кладёт его в рюкзак, иначе кладёт его в чемодан. Затем она берёт следующий по ценности предмет, если его можно положить в рюкзак, то есть если его масса вместе с массой уже положенных в рюкзак вещей не превосходит S, то кладёт его в рюкзак, иначе в чемодан, и таким же образом процесс продолжается для всех предметов в порядке убывания их ценности. Определите вес рюкзака и чемодана после того, как Алёна сложит все вещи. Первая строка входных данных содержит число S – максимально разрешённый вес рюкзака. Во второй строке входных данных записано число N – количество предметов.
Ввод:20,5,6,10,5,2,3
Вывод:18,8
Примечание:Максимально возможная масса рюкзака 20 кг. Дано 5 предметов весом 6, 10, 5, 2, 3. Сначала предмет весом 6 кладётся в рюкзак, затем предмет весом 10 тоже кладётся в рюкзак. Предмет весом 5 нельзя положить в рюкзак, так как тогда вес рюкзака станет 21 кг, поэтому предмет весом 5 кладётся в чемодан. Затем предмет весом 2 кладётся в рюкзак, а предмет весом 3 – в чемодан. Вес рюкзака 6 + 10 + 2 = 18, вес чемодана 5 + 3 = 8.
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int max = scan.nextInt();
int[] backpuck = new int[max];
int suitcase = 0;
int N = scan.nextInt();
for (int i = 1; i < N; i++) {
int cennost1 = scan.nextInt();
if(cennost1 < max) {
backpuck = cennost1;
}else{
suitcase = cennost1;
}
int cennost2 = scan.nextInt();
if(cennost2 < max) {
backpuck += cennost2;
}else{
suitcase = cennost2;
}
int cennost3 = scan.nextInt();
if(cennost3 < max) {
backpuck += cennost3;
}else{
suitcase = cennost3;
}
int cennost4 = scan.nextInt();
if(cennost4 < max) {
backpuck += cennost4;
}else{
suitcase = cennost4;
int cennost5 = scan.nextInt();
if(cennost5 < max) {
backpuck += cennost5;
}else{
suitcase = cennost5;
}
}
System.out.println(buckpuck);
System.out.println(suitcase);
}
}
}
Error: The operator += is undefined for the argument type(s) int,int
Интересно, что вы будете делать, если количество вещей возрастет или поменяется количество сумок? Это все вполне ужасно. никогда так не пишите...
class Main {
public static void main(String[] args) {
calculate(20, new int[]{6,10,5,2,3});
}
private static void calculate (int maxWeight, int[] weights){
Baggage baggage1 = Baggage.of(null, "Чемодан", Integer.MAX_VALUE);
Baggage baggage2 = Baggage.of(baggage1, "Рюкзак", maxWeight);
for (int weight : weights) baggage2.addThing(weight);
System.out.println(baggage1);
System.out.println(baggage2);
}
}
interface Baggage {
void addThing (int weight);
//Design pattern 'Factory Method'
static Baggage of(Baggage nextBaggage, String name, int maxWeight){
return new BaggageImpl(nextBaggage, name, maxWeight);
}
}
class BaggageImpl implements Baggage{
private final Optional<Baggage> nextBaggage;
private final String name;
private final int maxWeight;
private int currentWeight;
public BaggageImpl(Baggage nextBaggage, String name, int maxWeight) {
this.nextBaggage = Optional.ofNullable(nextBaggage);
this.name=name;
this.maxWeight = maxWeight;
this.currentWeight=0;
}
@Override
public void addThing (int weight){
if (weight+currentWeight <= maxWeight) currentWeight+=weight;
else nextBaggage.ifPresent(b->b.addThing(weight));
}
@Override
public String toString() {
return name + " (" + currentWeight+" kg.)";
}
}
Для данной конкретной задачи могу предложить решение без применения ООП:
public static void main(String[] args) {
final int maxWeightBackpack;
int weigthBackpack=0,weightSuitpack=0; // вес рюкзака и вес чемодана
Scanner sc = new Scanner(System.in);
maxWeightBackpack = sc.nextInt(); // Сначала максимальный вес рюкзака
int HMThings = sc.nextInt(); // Затем количество вещей
for(int i=0;i<HMThings;i++) {
int nextWeigthOfThing = sc.nextInt();
if(weigthBackpack+nextWeigthOfThing<=maxWeightBackpack) { // Можем ли мы положить это в рюкзак?
weigthBackpack+=nextWeigthOfThing; // Можем - кладем
}
else {
weightSuitpack+=nextWeigthOfThing; // Не можем - кладем в чемодан
}
}
System.out.println("weigthBackpack is: "+weigthBackpack);
System.out.println("weightSuitpack is: "+weightSuitpack);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как в JTextField сделать ввод русских букв независимым от раскладки клавиатуры?
считываю информацию из файла, после этого агрегирую её и записываю в отдельные файлыОднако при записи возникает проблема, почему-то программа...
написал код, сделал конфиг, запускаю из командной строки, а он мне выдает следующее
Так получилось, что после некоторых действий с android studio элемент component tree стал небольшим независимым окошком с возможностью передвижения,...