Advertisement
selebry

fsdfsdfs

Jan 25th, 2023
1,020
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <deque>
  5. using namespace std;
  6. static string frogway(int n, int k) {
  7.     int* field = new int[n + 1];
  8.     for (int i = 0; i < n + 1; i++)
  9.         field[i]  = 0;
  10.     for (int i = 2; i < n; i++) {
  11.         field[i] = rand() % 2;
  12.     }
  13.     for (int i = 1; i <= n; i++) {
  14.         cout << field[i] << ' ';
  15.     }
  16.     cout << '\n';
  17.     string ans;
  18.     int count = 0;
  19.     int i = 0;
  20.     while(i<n+1) {
  21.         for (int j = k; j >= 1; j--)
  22.         {
  23.             if (field[i + j] == 0) {
  24.                 ans += to_string(i)+' ';
  25.                 i += j;
  26.                 break;
  27.             }
  28.             if (j == 1) {
  29.                 ans += to_string(i) + ' ';
  30.                 i += k;
  31.             }
  32.             count++;
  33.         }
  34.     }
  35.     cout << "count!11: " << count << "\n";
  36.     return ans;
  37. }
  38. static string dpfrog(int n, int k) {
  39.     int* dp = new int[n + 1];
  40.     int* frog = new int[n + 1];
  41.     for (int i = 0; i < n + 1; i++)
  42.         dp[i] = frog[i] = 0;
  43.     for (int i = 2; i < n; i++) {
  44.         dp[i] = rand()%2;
  45.     }
  46.     for (int i = 1; i <= n; i++) {
  47.         cout << dp[i] << ' ';
  48.     }
  49.     cout << '\n';
  50.     int count=0;
  51.     for (int i = k + 1; i <= n; i++) {
  52.         int nmin = 1000;
  53.         int mini = 1000;
  54.         for (int j = 1; j <= k; j++) {
  55.             if (nmin > dp[i - j]) {
  56.                 nmin = dp[i - j];
  57.                 mini = i - j;
  58.             }
  59.             count++;
  60.         }
  61.         frog[i] = mini;
  62.         dp[i] += nmin;
  63.     }
  64.     cout << "count222: " << count << '\n';
  65.     int cnt = 0;
  66.     int num = n;
  67.     deque<int> jumps;
  68.     jumps.push_back(num);
  69.     while (num > 1) {
  70.         num = frog[num];
  71.         jumps.push_front(num);
  72.         cnt++;
  73.     }
  74.     string ans = dp[n] + "\n" + cnt + '\n';
  75.     while (!jumps.empty()) {
  76.         cout << jumps.back() << " ";
  77.         jumps.pop_back();
  78.     }
  79.     return ans;
  80. }
  81. int main()
  82. {
  83.     srand(time(NULL));
  84.     cout << frogway(20, 3);
  85.     cout << dpfrog(20, 3);
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement