返回列表 發帖
本帖最後由 陳品叡 於 2024-8-11 10:52 編輯
  1. #include <bits/stdc++.h>

  2. using namespace std;
  3. int mod = 1000000007;
  4. vector <int> dp;
  5. vector <int> coin;
  6. vector <int> visited;

  7. int aa(int &n, int x)
  8. {
  9.     if(visited[x])   return dp[x];
  10.     for(int i=0; i<n; i++)
  11.     {
  12.         if(coin[i]<=x)
  13.         {
  14.             dp[x] += aa(n, x-coin[i]);
  15.             dp[x]%=mod;
  16.         }
  17.     }
  18.     //cout << x << " " << dp[x] << endl;
  19.     visited[x]++;
  20.     return dp[x];
  21. }

  22. int main()
  23. {
  24.     int n, x;
  25.     cin >> n >> x;
  26.     dp.resize(x);
  27.     visited.resize(x);
  28.     coin.resize(n);
  29.     dp[0]++;
  30.     for(int i=0; i<n; i++)
  31.         cin >> coin[i];
  32.     cout << aa(n, x);
  33.     return 0;
  34. }
複製代碼

TOP

返回列表