二维dp初始化有问题,大佬求助,在线等
查看原帖
二维dp初始化有问题,大佬求助,在线等
265978
Retired楼主2021/8/10 12:23
// Problem: P1077 [NOIP2012 普及组] 摆花
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1077
// Memory Limit: 125 MB
// Time Limit: 1000 ms

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <sstream>
#define pb push_back 
#define in insert
#define mem(f, x) memset(f,x,sizeof(f)) 
#define fo(i,a,n) for(int i=(a);i<=(n);++i)
#define fo_(i,a,n) for(int i=(a);i<(n);++i)
#define debug(x) cout<<#x<<":"<<x<<endl;
#define endl '\n'
using namespace std;

template<typename T>
ostream& operator<<(ostream& os,const vector<T>&v){for(int i=0,j=0;i<v.size();i++,j++)if(j>=5){j=0;puts("");}else os<<v[i]<<" ";return os;}
template<typename T>
ostream& operator<<(ostream& os,const set<T>&v){for(auto c:v)os<<c<<" ";return os;}

typedef pair<int,int>PII;
typedef pair<long,long>PLL;

typedef long long ll;
typedef unsigned long long ull; 
const int N=2e5+10,M=1e9+7;
const int mod=1e6+7;
ll n,m,_;

int f[110][110];

void solve()
{
	cin>>n>>m;
	
   //为什么用48和49初始化是错的?求指点
	 // for(int i=0;i<=n;i++)
		 // f[i][0]=1;
	f[0][0]=1;
	for(int i=1;i<=n;i++)
	{
		int s;cin>>s;
		for(int j=m;j>=0;j--)
		{
			for(int k=0;k<=j&&k<=s;k++)
			{
				f[i][j]=(f[i][j]+f[i-1][j-k])%mod;
			}
		}
	}
	
	cout<<f[n][m]<<endl;
	
}

int main()
{
	solve();
	return 0;
}
2021/8/10 12:23
加载中...