返回列表 發帖

2024/08/18 課程重點(品叡)

本帖最後由 呂晉豪 於 2024-8-18 09:30 編輯

[課堂重點]
複習上次上課內容
考108 208 309 410 509 606 710
地毯式複習502-
CSES - Book Shop
CSES - Array Description
CSES - Counting Towers



[作業檢討]
701-710
[今日作業]
再次練習501-510,上傳到KitaJudge並獲得AC

[下次考試]
101-710數題

  1. #include <bits/stdc++.h>

  2. using namespace std;

  3. int main()
  4. {
  5.     int n, x;
  6.     cin >> n >> x;
  7.     vector <pair<int, int>> data(n);
  8.     vector <int> dp(x+1);
  9.     for(int i=0; i<n; i++)
  10.         cin >> data[i].first;
  11.     for(int i=0; i<n; i++)
  12.         cin >> data[i].second;
  13.     for(auto i : data)
  14.     {
  15.         for(int j=0; i.first+j<=x; j++)
  16.             dp[i.first+j] = dp[j]+i.second;
  17.     }
  18.     cout << dp[x];
  19.     return 0;
  20. }
複製代碼

TOP

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. string str1, str2;
  4. vector <vector<int>> dp;
  5. vector <vector<bool>> visited;
  6. int re (int i, int j) {
  7.     if (i < 0 and j < 0) {
  8.         return 0;
  9.     } else if (i < 0) {
  10.         return j + 1;
  11.     } else if (j < 0) {
  12.         return i + 1;
  13.     } /*else if (visited[i][j] == 1) {
  14.         return dp[i][j];
  15.     } */

  16.     if (str1[i] == str2[j]) {
  17.         visited[i][j] = 1;
  18.         return re(i - 1, j - 1);
  19.     } else {
  20.         int a, b, c;
  21.         a = re(i, j - 1) + 1;
  22.         b = re(i - 1, j) + 1;
  23.         c = re(i - 1, j - 1) + 1;
  24.         visited[i][j] = 1;
  25.         return min(a, min(b, c));
  26.     }
  27. }

  28. int main()
  29. {
  30.     cin >> str1 >> str2;
  31.     dp.resize(str1.length());
  32.     visited.resize(str1.length());
  33.     for (int i = 0; i < str1.length(); i++) {
  34.         dp[i].resize(str2.length());
  35.         visited[i].resize(str2.length());
  36.     }
  37.     cout << re(str1.length() - 1, str2.length() - 1);
  38.     return 0;
  39. }
複製代碼

TOP

返回列表