AcWing 4408. 李白打酒加强版
原题链接
中等
作者:
许昌学院彭于晏
,
2024-04-11 13:33:19
,
所有人可见
,
阅读 5
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static int ans;
public static int n, m, cnt;
public static boolean heli(List<Integer> list) {
int sum = 2;
int flag = 0;
for(int i = 1; i <= n + m; i++) {
if(list.contains(i))
sum *= 2;
else
sum -= 1;
if(sum < 0)
{
flag = 1;
break;
}
}
if(list.contains(n + m)) return false;
if(sum == 0 && flag == 0) return true;
return false;
}
public static void dfs(List<Integer> list, int u) {
if(u > n) {
if(heli(list)) cnt++;
return ;
}
int i = 0;
i = u == 1 ? 1 : list.get(u - 2) + 1;
for(; i <= n + m; i++) {
list.add(i);
dfs(list, u + 1);
list.remove(list.size() - 1);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt(); m =sc.nextInt();
List<Integer> ans = new ArrayList<>();
dfs(ans, 1);
System.out.println(cnt);
sc.close();
}
}
果然还是过不了,难搞;