Advertisement
STALKER-FC

Untitled

Jul 6th, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #define INF 1000
  5.  
  6. using namespace std;
  7.  
  8. int **dp;
  9. vector<int> result;
  10.  
  11. int min(int a, int b)
  12. {
  13.     if (a > b)
  14.         return a;
  15.     else
  16.         return b;
  17. }
  18.  
  19. void Print(int n, int m)
  20. {
  21.     for (int i = 0; i <= m; i++)
  22.     {
  23.         for (int j = 0; j <= n; j++)
  24.             cout << dp[i][j] << " ";
  25.         cout << endl;
  26.     }
  27.  
  28. }
  29. void FindWay(int i, int j)
  30. {
  31.     if (dp[i][j] == 0 || dp[i][j] == INF)
  32.         return;
  33.     if (dp[i - 1][j] == dp[i][j])
  34.     {
  35.         FindWay(i - 1, j);
  36.     }
  37.     else
  38.     {
  39.         FindWay(i - 1, j - (int)pow(i, 3));
  40.         result[i]++;
  41.     }
  42. }
  43.  
  44. void GetResult(int n)
  45. {
  46.     int m = (int)pow((double) n, 1.0 / 3);
  47.     dp = new int*[m + 1];
  48.     for (int i = 0; i <= m; i++)
  49.         dp[i] = new int[n + 1];
  50.     dp[0][0] = 0;
  51.     for (int i = 1; i <= n; i++)
  52.         dp[0][i] = INF;
  53.     for (int i = 1; i <= m; i++)
  54.         for (int j = 0; j <= n; j++)
  55.         {
  56.             if (j < (int)pow(i, 3) - 1)
  57.                 dp[i][j] = dp[i - 1][j];
  58.             else
  59.                 dp[i][j] = min(dp[i - 1][j], dp[i][j - (int)pow(i, 3)] + 1);
  60.         }
  61.     Print(n, m);
  62.     cout << "result: " << dp[m][n] << endl;
  63.     system("pause");
  64.     result.resize(m + 1);
  65.     for (int i = 0; i <= m; i++)
  66.         result[i] = 0;
  67. //  FindWay(n, m);
  68.     for (int i = 1; i <= m; i++)
  69.         cout << result[i] << " ";
  70. }
  71.  
  72. int main()
  73. {
  74.     int n;
  75.     cin >> n;
  76.     GetResult(n);
  77.    
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement