#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int n,m;
int i,j,k;
int a1[105],a2[105],b[105],c[105];
while(cin>>n>>m)
{
for(i=1; i<=n; i++)
{
scanf("%d%d",&b[i],&c[i]);
}
memset(a1,0,sizeof(a1));
memset(a2,0,sizeof(a2));
for(i=b[1]; i<=c[1]; i++)//这是指数是有范围的!
{
a1[i]=1;
}
for(i=2; i<=n; i++)
{
for(j=0; j<=m; j++)
{
if(a1[j])
{
for(k=b[i]; k+j<=m&&k<=c[i]; k++)//这里为什么是k++,因为每个式子中都是从最少到最多递增的!而且是一个一个递增的
{
a2[k+j]+=a1[j];
}
}
}
for(j=0; j<=m; j++)
{
a1[j]=a2[j];
a2[j]=0;
}
}
printf("%d\n",a1[m]);
}
return 0;
}
HDU 2152
最新推荐文章于 2019-09-30 19:13:54 发布