为啥不输出

为啥不输出

Mapleleave · 发布于 2021-04-15 · 浏览 771 回复 1

本地跑的

全部回复 共 1 条

  1. Mapleleave #1 楼主 ·

    贴下代码把有没有大佬能看看

    #include<iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    
    int k, r, m, n;
    
    const int K = 1500;
    const int M = 510;
    
    int f[K][M][M];
    int v[K][2];
    
    int tj(string str) {//0
        //cout << str << endl;
        int res = 0;
        for (auto c : str) {
            if (c == '0') res++;
        }
    
        //cout << res << endl;
        //printf("\n");
        return res;
    
    }
    
    int main() {
        cin >> k >> r >> m >> n;
        for (int i = 1; i <= k; i++) {
            string s;
            cin >> s;
            v[i][0] = tj(s);
            v[i][1] = s.size() - v[i][0];
            // cout << v[i][0] << " " << v[i][1] << endl;
        }
    
    
        for (int i = 1; i <= k; i++) {
            for (int j = 0; j <= m; j++) {
                for (int k = 0; k <= n; k++) {
                    if (j < v[i][0] || k < v[i][1]) f[i][j][k] = f[i - 1][j][k];
                    else {
                        f[i][j][k] = max(f[i - 1][j][k], f[i - 1][j - v[i][0]][k - v[i][1]] + 1);
                        // cout << f[i-1][j][k]<<" " <<f[i-1][j-v[i][0]][k-v[i][1]] << endl;
                    }
                    //  cout <<i<< " "<< j<<" " <<k<< " "<<f[i][j][k] << endl;
                }
            }
        }
        //cout << f[k][m][n] << endl;
        printf("%d", f[k][m][n]);
        return 0;
    }
    

发表回复