不优化搜索解法(无法AC)

071maozihan 2022-04-03 15:44:34 16 返回题目

#include<bits/stdc++.h>

#define int long long

using namespace std;

const long long maxn=1e2+10,P=1000007;

int c,n;

int a[maxn];

int ans;

void DFS(int x,int last,int num){//x表示第几个花盆 , last表示上一盆花的种类 ,num表示当前这种花的个数

if(num>a[last])return ;//防止花的数量超出限制

if(x==c){//合法放好了c个花盆

	ans++;

	ans%=P;

	return ;

}

for(int i=last;i<=n;i++){//枚举其他情况

	if(i==last){

		DFS(x+1,i,num+1);

	}

	else if(a[i]!=0)DFS(x+1,i,1);

}

}

signed main(){

cin>>n>>c;

for(int i=1;i<=n;i++){

	cin>>a[i];//输入不多说 
}

for(int i=1;i<=n;i++){

	DFS(1,i,1);

}

cout<<ans;

return 0;

}

{{ vote && vote.total.up }}

共 1 条回复

wuhongzhen

牛蛙