在c ++推送和前面排队

时间:2018-01-23 19:44:54

标签: c++ stl queue

代码是代码中问题的答案所以我只需要代码中的编程错误...队列会产生问题他不会推动元素或输出中的问题..你可以帮帮我?

当我运行它时......他们打印一个随机数而不是我将它们推入队列的数字

#include<bits/stdc++.h>

using namespace std;
bool check(int a , int b , string s){
    int test[a][b];
    int k = 0;

    for(int i = 0 ; i < b ; ++i){
        for(int j = 0 ; j < a ; ++j){
            test[i][j] = s[k++];
        }
    }

    bool f = true;
    bool fx = false;

    for(int i = 0 ; i < b ; ++i){
        for(int j = 0 ; j < a ; ++j){
            if(test[j][i] == 'O'){
                f = false;
                break;
            }
        }
        if(f){
            fx = true;
            break;
        }
        f = true;
    }
    return fx;
}

int main(void){
    int t;
    cin>>t;

    string s;
    queue<int> qa;
    queue<int> qb;
    const int n = 12;
    for(int i = 0 ; i < t ; ++i){
        cin>>s;
        int cnt = 0;
        int a[6] = {1  , 2 , 3 ,4  ,6 , 12};
        int b[6] = {12 , 6 , 4 , 3 ,2 ,  1};

        for(int j = 0 ; j < 6 ; ++j){
            if(check(a[j] , b[j] , s)){
                ++cnt;
                qa.push(a[j]);
                qb.push(b[j]);
            }
        }
        cout<<cnt<<' ';
        while(!qa.empty() && !qb.empty()){
            cout<<qa.front() <<'x'<<qb.front()<<' ';
            qa.pop();
            qb.pop();
        }
        cout<<endl;
    }
}

1 个答案:

答案 0 :(得分:2)

在这部分

int test[a][b];
int k = 0;
for(int i = 0 ; i < b ; ++i)
{
    for(int j = 0 ; j < a ; ++j)
    {
        test[i][j] = s[k++];
    }
}

你创建测试[a] [b],但是你需要进行测试[b] [a]