1. Название Описание
Поместите M одинаковых яблок в N одинаковых тарелок и оставьте несколько тарелок пустыми. Сколько существует разных точек? (Обозначается K) 5,1,1 и 1,5,1 - это один и тот же метод деления.
запись
Первая строка - это номер тестовых данных t (0 <= t <= 20). Каждая строка ниже содержит два целых числа M и N, разделенных пробелами. 1 <= M, N <= 10.
экспорт
Для каждого набора входных данных M и N используйте строку для вывода соответствующего K.
样例输入
1
7 3
样例输出
8
Во-вторых, решение
Метод первый: случайный поиск
Пусть a будет количеством яблок, а b будет количеством корзин, как указано ниже:
a = 1 || b == 1
Когда:- Положите единственное яблоко в корзину.
- Или положить все яблоки в единственную корзину.
b > a
В то время, должно быть, пустые корзины ba. Эти корзины не влияют на мой выбор размещения, потому что я могу только позволить корзине иметь яблоки.b <= a
Когда это можно разделить на две ситуации:a = b
Когда, на самом деле, вариантов очень много:- Пусть корзина опустеет. Но чтобы быть скудной и не пропустить, я оставляю не более одной корзины за раз.
- Держите корзины пустыми: или каждая корзина полна.
b < a
Есть также два варианта:- Пусть корзина опустеет. Но чтобы быть скудной и не пропустить, я оставляю не более одной корзины за раз.
- Пусть корзина не будет пустой, пусть в корзинах по одному яблоку, а остальные ab строят другие планы.
import java.util.*;
import java.math.*;
import java.io.*;
public class Main{
static boolean[] vis;
static int res;
private static int dfs(int a, int b) {
if (a == 1 || b == 1)
return 1;
if (a == b)
return dfs(a, b-1) + 1;
if (a < b)
return dfs(a, a);
if (a > b)
return dfs(a, b-1) + dfs(a-b, b);
}
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(new BufferedInputStream(System.in));
BufferedWriter w = new BufferedWriter(new OutputStreamWriter(System.out));
int t = sc.nextInt();
while (t-- > 0) {
int a = sc.nextInt(); //app
int b = sc.nextInt(); //篮子
System.out.println(dfs(a, b));
}
}
}
Анализ сложности
- Сложность времени: ,
- Пространственная сложность: ,
Способ 2: дп
Поверенный в делах ...
Анализ сложности
- Сложность времени: ,
- Пространственная сложность: ,