NOJ 176

    技术2022-05-19  19

    #include<iostream> #include<vector>; #include<algorithm> #include<iterator> #include<cstring> using namespace std; vector<int> v; int a[110][110][110]; void show(){ copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));cout<<endl; } int fun(int m,int n,int min)//最小>=min { if(m<=0||n<=0){ if(m==0&&n==0){ return 1; } return 0; } if(min*n>m)return 0; if(a[m][n][min])return a[m][n][min]; if(!a[m-min][n-1][min]) a[m-min][n-1][min]=fun(m-min,n-1,min); if(!a[m][n][min+1]) a[m][n][min+1]=fun(m,n,min+1); return a[m][n][min]=a[m-min][n-1][min]+a[m][n][min+1]; } int main() { memset(a,0,sizeof(a)); int n;cin>>n; while(n--){ int a,b;cin>>a>>b; cout<<fun(a,b,1)<<endl; } }  


    最新回复(0)