3 条题解

  • 1
    @ 2025-5-24 19:16:26
    
    #include <iostream>
    #include <vector>
    #include <stack>
    using namespace std;
    
    vector<string> result;
    int count = 0;
    
    void dfs(int n, int index, stack<int>& s, vector<int>& path) {
        if (count >= 20) return;
        if (path.size() == n) {
            string res;
            for (int num : path) res += to_string(num);
            result.push_back(res);
            count++;
            return;
        }
        
        if (!s.empty()) {
            int temp = s.top();
            s.pop();
            path.push_back(temp);
            dfs(n, index, s, path);
            path.pop_back();
            s.push(temp);
        }
        
        if (index <= n) {
            s.push(index);
            dfs(n, index + 1, s, path);
            s.pop();
        }
    }
    
    int main() {
        int n;
        cin >> n;
        stack<int> s;
        vector<int> path;
        dfs(n, 1, s, path);
        
        for (const auto& res : result) {
            cout << res << endl;
        }
        return 0;
    }
    
    
    • @ 2025-5-24 19:19:29

      666现在题解都这样发??

  • -3
    @ 2024-7-28 15:28:10

    #include #include #include #include #include

    using namespace std;

    #define INF 0x3f3f3f3f const int maxn = 1e6 + 7; stacks1,s2; int f[maxn],sum[maxn]; int main() { int Q;scanf("%d",&Q); sum[0] = 0; int cnt = 0; memset(f,-INF,sizeof(f)); while(Q--) { char op[10];int n; scanf("%s",op); if(op[0] == 'I') { cnt++; scanf("%d",&n); sum[cnt] = sum[cnt - 1] + n; f[cnt] = max(f[cnt - 1],sum[cnt]); s1.push(n); } else if(op[0] == 'D') { if(!s1.empty()) { cnt--; s1.pop(); } } else if(op[0] == 'L') { if(!s1.empty()) { cnt--; int tmp = s1.top(); s2.push(tmp); s1.pop(); } } else if(op[0] == 'R') { if(!s2.empty()) { cnt++; int tmp = s2.top(); sum[cnt] = sum[cnt - 1] + tmp; f[cnt] = max(f[cnt - 1],sum[cnt]); s1.push(tmp); s2.pop(); } } else if(op[0] == 'Q') { scanf("%d",&n); printf("%d\n",f[n]); } } return 0; }

    • -4
      @ 2024-6-22 20:16:50

      #include #include #include #include #include

      using namespace std;

      #define INF 0x3f3f3f3f const int maxn = 1e6 + 7; stacks1,s2; int f[maxn],sum[maxn]; int main() { int Q;scanf("%d",&Q); sum[0] = 0; int cnt = 0; memset(f,-INF,sizeof(f)); while(Q--) { char op[10];int n; scanf("%s",op); if(op[0] == 'I') { cnt++; scanf("%d",&n); sum[cnt] = sum[cnt - 1] + n; f[cnt] = max(f[cnt - 1],sum[cnt]); s1.push(n); } else if(op[0] == 'D') { if(!s1.empty()) { cnt--; s1.pop(); } } else if(op[0] == 'L') { if(!s1.empty()) { cnt--; int tmp = s1.top(); s2.push(tmp); s1.pop(); } } else if(op[0] == 'R') { if(!s2.empty()) { cnt++; int tmp = s2.top(); sum[cnt] = sum[cnt - 1] + tmp; f[cnt] = max(f[cnt - 1],sum[cnt]); s1.push(tmp); s2.pop(); } } else if(op[0] == 'Q') { scanf("%d",&n); printf("%d\n",f[n]); } } return 0; }

      • 1

      信息

      ID
      40
      时间
      1000ms
      内存
      128MiB
      难度
      4
      标签
      递交数
      103
      已通过
      50
      上传者