蒟蒻抢占第一篇题解!

zhaocong 2022-04-03 14:36:36 29 返回题目

这道题有两种解法:

1.DP解法

2.记忆化搜索

DP思路

其实可以把全部的设为一条线m,我们把m给切割成若干段。m[i]表示到i为止的方案总数。

其实这道题很像单词的划分 http://code.qingtengbc.com/problem/10250

上AC代码!!!!!!!!!!!!

#include<bits/stdc++.h>

using namespace std;

int n,m,f[1010][1010],a[10010];

int main(){

cin>>n>>m;

for(int i=1;i<=n;i++) cin>>a[i];

for(int i=0;i<=n;i++) f[0][i]=1;

for(int i=1;i<=m;i++){
	
	for(int k=1;k<=n;k++){
		
		for(int j=0;j<=i;j++){
			
			if(i-j<=a[k]) f[i][k]=(f[i][k]+f[j][k-1])%1000007;
			
		}
		
	}
	
}

cout<<f[m][n]<<"\n";

return 0;

}

吼吼吼!

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

共 1 条回复

wuhongzhen

What's up.