题目描述
萌樱花是一只单身狗。
萌樱花今天决定种树,于是他来到了自己家的后院。
萌樱花的后院有n个树坑,所有树坑排列在一行上,每一个树坑都可以种一棵树,相邻树坑间的距离为1,现在所有的树坑都是空着的。
作为一只单身狗,他决定种上至少k棵树来保护环境。
为了让树苗宝宝健康快乐地生长,他要求任意两棵树之间的距离至少为m,请问这样种树的方案数是多少?
输入
1<=n,k,m<=21
输入格式:
n k m
输出
输出种树的方案数
样例输入
3 2 2
样例输出
1
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; int a[100]; int main() { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); int n,m,k; while(~scanf("%d%d%d",&n,&k,&m)) { int ans=0; for(int i=0; i<(1<<n); ++i) { int cnt=0; memset(a,0,sizeof(a)); int num=i; while(num!=0) { a[cnt++]=num%2; num=num/2; } int count=0; num=1; bool f=true; for(int j=0; j<cnt; ++j) { if(a[j]==1) { if(num<m&&j!=0) f=false; count++; num=1; } else num++; } if(f&&count>=k) ans++; } printf("%d\n",ans); } return 0; }
原文地址:https://www.cnblogs.com/yinghualuowu/p/9494713.html
时间: 2024-10-28 19:04:11